IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Sélectionner un enregistrement d'après la valeur du précédent


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut Sélectionner un enregistrement d'après la valeur du précédent
    Bonjour

    J ai une table avec un champ 'B', un integer

    Par exemple a la ligne 3 B=10, à la ligne 4, B=11

    je cherche a selectionner toutes les lignes quand B=11 et que B=10 à la ligne precedente mais je n ai aucune idee de comment y parvenir.

    merci de votre aide

    stephane

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    quel est votre sgbd ?

    Ensuite il n'y a pas d'ordre de ligne dans une table sql. Quel critere de tri doit on prendre ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    merci de vous interesser à mon pb. c est vari je n ai pas été assez precis

    C est du sqlite
    J ai donc une table import avec une colonne id integer autoincrement et une colonne B integer

    Je souhaite recuperer tous les ID des lignes quand par exemple B=0 et que la ligne precedente B=-1

    J ai fait ça mais ça ne me renvoit qu un seul resultat malgre la limit 0,100

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id, ( SELECT id FROM import where B=0 ) AS NOLIGNE from import  where B<0 and id=NOLIGNE-1 limit 0,100
    merci de votre aide

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    les ID se suivent sans interruption ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par punkoff Voir le message
    les ID se suivent sans interruption ?
    Oui c est ça

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Dans ce cas vous pouvez effectuez une jointure interne entre cette me^=me table et en précisant vos conditions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select ..
    from ma_table a
    inner join ma_table b on a.id-1 = b.id and b.val =....
    where a.val=....

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    merci d avoir pris le temps de me repondre

    J ai donc adapté votre requete à mon cas precis et testé dans sqlitemanager.
    J ai le message d erreur suivant :

    ambiguous column name: id

    ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM import a INNER JOIN import b ON a.id-1 =b.id AND b.val =0 WHERE a.val=-1
    La structure de ma table est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE "import" ("id" INTEGER PRIMARY KEY  NOT NULL ,"id_analyse" integer,"cross" varchar,"date" datetime,"close" double,"low" double,"high" double,"T" integer DEFAULT (null) ,"B" INTEGER)
    merci

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    c'est à partir de ce moment là qu'il faut commencer à utiliser google

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Dans votre partie SELECT, il faut préciser l'alias de la table dans laquelle prendre la colonne id...

    en résumé, SELECT a.id... ou SELECT b.id...

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Ben j ai cherché mais la seule chose comprehensible c est http://databases.aspfaq.com/database...name-mean.html


    ce code provoque l erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT column1 
        FROM table1 
        JOIN table2 
        ON table1.column1 = table2.column1
    Celui ci est corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT column1 = t1.column1 
        FROM table1 t1 
        JOIN table2 t2 
        ON t1.column1 = t2.column1
    A la lecture de cela, je pensais qu il fallait proceder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id=a.id FROM import a INNER JOIN import b ON a.id-1 =b.id AND b.val =0 WHERE a.val=-1
    mais non, j ai toujours le même message

    désolé mais je ne comprends pas

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Pour cette erreur je trouve

    When more than one table is used (in a JOIN for example) there may be two columns with the same name.
    Mais ici il n y a qu une table d utilisée...

    Je suis perdu d autant que si je suis le conseil de aieeeuuuuu j ai une nouvelle erreur : no such column: a.val

    ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT a.id FROM import a INNER JOIN import b ON a.id-1 =b.id AND b.val =0 WHERE a.val=-1

  12. #12
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    vous faites référence dans votre requête à une colonne "val", mais votre table ne contient pas de colonne s'appelant ainsi !!!!!!

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 549
    Points : 226
    Points
    226
    Par défaut
    Je suis un âne !
    à me focaliser sur cette erreur, je n ai pas vu !
    Merci

    Tout est rentré dans l ordre ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/03/2009, 12h54
  2. [CSV] Enregistrer sous? Apres un fichier enregistré
    Par Anakior dans le forum Langage
    Réponses: 12
    Dernier message: 19/12/2005, 13h30
  3. Réponses: 9
    Dernier message: 14/10/2005, 13h46
  4. Réponses: 4
    Dernier message: 16/09/2005, 15h56
  5. Enregistrement courant après refresh [cas particulier]
    Par say dans le forum Bases de données
    Réponses: 8
    Dernier message: 02/08/2005, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo