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 :

Requête SQL [Débutant(e)]


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Requête SQL
    Bonjour,

    Excusez par avance mon niveau débutant...

    Je dispose de 2 tables

    Un table COMMUNES avec un champ clé CODECOM
    Une table FLUX avec un champ CODECOM1 et un autre CODECOM2

    Je cherche l'intitulé de la requête SQL qui me donnera une table EXTRACFLUX remplissant la condition "CODECOM1=CODECOM ou CODECOM2=CODECOM"

    Merci par avance pour le retour!

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 387
    Points
    28 387
    Par défaut
    Il faut effectuer des jointures sur deux exemplaires de la table COMMUNES

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci pour le retour, est-ce que celà ressemblerait à ca?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT FLUX.[id]
    FROM COMMUNES AS COMMUNES_1 INNER JOIN (COMMUNES INNER JOIN FLUX ON COMMUNES.CODECOM = COMMUNES.[CODECOM1]) ON COMMUNES_1.CODECOM = COMMUNES.[CODECOM2];

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Malheureusement la requête plus haut ne me donne pas le résultat escompté...

    Ma table COMMUNES :

    CODECOM
    A
    B
    C

    Ma table FLUX :

    ID CODECOM1 CODECOM2
    1 A C
    2 B D
    3 D A
    4 B B
    5 D D

    Le résultat de la requête plus haut me donne les lignes
    1
    4

    Ce que je souhaite c'est d'avoir comme résultat les lignes
    1
    2
    3
    4

    Avez-vous une idée de la syntaxe de la requête?

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Vos critères de jointure ne sont pas bons.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select flux.id, c1.nom, c2.nom
    from flux f
    inner join communes c1 on c1.codecom = flux.codecom1
    inner join communes c2 on c2.codecom = flux.codecom2

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT FLUX.ID
    FROM FLUX 
    INNER JOIN COMMUNES c1 ON c1.CODECOM = FLUX.CODECOM1 INNER JOIN COMMUNES c2 ON c2.CODECOM = FLUX.CODECOM2;
    Access me retourne "erreur de syntaxe (opérateur absent) dans l'expression",

    argh, n'aurais-je rien compris?

    si une bonne ame peut me donner la syntaxe précise par rapport aux intitulés de mon exemple, merci par avance!

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 387
    Points
    28 387
    Par défaut
    Access réclame des parenthèses lorsqu'il y a plus d'une jointure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT  FLUX.ID
    FROM    (   FLUX 
            INNER JOIN
                COMMUNES c1 
                ON c1.CODECOM = FLUX.CODECOM1
            )
        INNER JOIN
            COMMUNES c2 
            ON c2.CODECOM = FLUX.CODECOM2
    ;

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci pour la réponse, malheureusement le résultat par rapport à mon exemple donne toujours uniquement les lignes 1 et 4...

    or ce que je souhaite ce sont les lignes 1, 2, 3 et 4, à savoir identifier les lignes dans lesquelles CODECOM1=CODECOM ou/et CODECOM2=CODECOM

    Une idée?

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut réponse
    Citation Envoyé par boblebob Voir le message
    Merci pour la réponse, malheureusement le résultat par rapport à mon exemple donne toujours uniquement les lignes 1 et 4...

    or ce que je souhaite ce sont les lignes 1, 2, 3 et 4, à savoir identifier les lignes dans lesquelles CODECOM1=CODECOM ou/et CODECOM2=CODECOM

    Une idée?
    Salut,
    Peut-être avec l'union de 2 requêtes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT c.*
    FROM communes c
    INNER JOIN FLUX f ON f.codecom1 = c.codecom
    UNION
    SELECT co.*
    FROM communes co
    INNER JOIN FLUX fl on fl.codecom2 = c.codecom
    L'union supprimera les doublons me semble t-il.
    Tiens nous au courant.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    A priori la réponse est celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT FLUX.N°, FLUX.CODECOM1, FLUX.CODECOM2
    FROM COMMUNES AS COMMUNES_1, FLUX, COMMUNES AS COMMUNES_2
    WHERE (((FLUX.CODECOM1)=[COMMUNES_1].[CODECOM])) OR (((FLUX.CODECOM2)=[COMMUNES_2].[CODECOM]))
    GROUP BY FLUX.N°, FLUX.CODECOM1, FLUX.CODECOM2;
    Merci à tous ceux qui ont pris me temps de me répondre!

  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Les jointures s'écrivent depuis 20 ans avec l'opérateur JOIN ; il serait temps de s'y mettre !

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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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