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

Requêtes MySQL Discussion :

Grouper deux tables


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Grouper deux tables
    Bonjour,

    Alors voilà, j'ai deux tables dans ma base de données, lel et scans, qui se présentent comme cela :

    lel
    ---
    id
    id_manga
    numero

    scans
    ------
    id
    id_manga
    numero
    liens_ddl

    J'aimerais sélectionner par exemple sur les deux tables, les lignes ou id_manga est égal à 6 par exemple, et où le numéro est le même sur les deux tables.

    Je m'explique, au départ, j'ai cela :

    scans
    id-----id_manga-----numero------liens_ddl
    ------------------------------------------
    4-----6-------------1------------http://

    lel
    id-----id_manga-----numero
    ----------------------------
    1-----6-------------1
    2-----6-------------2
    3-----6-------------3

    Et j'aimerais avoir ce résultat :

    resultat
    lel.id-----numero-----scans.liens_ddl
    ------------------------------------
    1--------1-----------http://
    2--------2-----------NULL
    3--------3-----------NULL

    J'ai essayé avec les jointures, inner, left, right et cross, mais je n'obtiens à chaque fois qu'une seule ligne (la premiere dans mon exemple). Or, je veux toutes les lignes de mes deux tables. A savoir, j'ai montré cela en exemple, mais la table scans peut très bien être plus longue que celle de lel.

    Je sèche. J'ai regardé du côté de UNION mais, soit je n'y ai pas compris grand chose, soit cela ne fonctionne pas.

    J'en fait appel à vous, merci d'avance !

  2. #2
    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,

    C'est bien un jointure externe qu'il vous faut. Par contre, il faut mettre votre test sur id_manga de la table scans dans la condition de jointure, car le mettre dans le WHERE annulerait l'effet de la jointure externe

    donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT l.id, l.numero, s.liens_ddl
    FROM lel AS l
    LEFT OUTER JOIN Scans AS s
        ON s.id = l.id
        AND s.id_manga = l.id_manga
        AND s.numero = l.numero
    WHERE l.id_manga = 6

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci de votre réponse !

    Malheureusement, votre requête ne me donne pas le résultat recherché. Je ne vais pas chercher à essayer de comprendre, car j'ai résolu mon problème grâce à cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT L.id, L.numero AS n, S.liens_ddl, S.numero AS n2
    FROM lel L
    LEFT JOIN scans S ON L.id_manga = S.id_manga AND L.numero = S.numero
    UNION ALL
    SELECT L.id, L.numero, S.liens_ddl, S.numero
    FROM lel L
    RIGHT JOIN scans S ON L.id_manga = S.id_manga AND L.numero = S.numero
    WHERE L.numero IS NULL AND S.id_manga=6
    ORDER BY COALESCE(n, n2)
    Encore merci !

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

Discussions similaires

  1. [VB6]Grouper les données des deux tables dans une troisième
    Par Abed_H dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 29/04/2009, 11h29
  2. Grouper deux champs d'une même table
    Par Bridou dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/04/2009, 10h18
  3. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45
  4. 2 Count() sur deux tables en jointures gauches
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2003, 16h53
  5. regrouper deux tables
    Par Shabata dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2003, 15h02

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