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 et SQL. Discussion :

Requete: Jointure sur un seul élément


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut Requete: Jointure sur un seul élément
    Bonjour,

    Désolé pour le titre si peu parlant mais je trouve rien de mieux.

    La structure:
    J'ai deux tables, la première "INCIDENTS" liste des incidents (champs: id [primaire], description)
    La deuxième "IDENTIFIANTS" liste des identifiants pour quelques incidents de la table INCIDENT; il peut y en avoir plusieurs. (champs: id, nom)

    Mon problème:
    Je dois générer une requète sur les incidents avec l'information sur les identifiants, mais je ne veux qu'une ligne par incident
    (donc un simple JOIN ne fonctionne pas: si j'ai deux identifiants pour le même incidents, la jointure créera deux lignes)
    Je ne vois comment tous les accoler à la fin des incidents, donc en avoir 2 serait super (1 s'il n'y a vraieùment pas moyen de faire autrement)

    Quelqu'un aurais-t-il une idée?

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    A force de chercher j'ai trouvé quelque chose
    (j'ai appelé mes tables de test A et B)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    SELECT A.Desc, B_1.nom, B_2.nom, B_3.nom
    FROM ((A LEFT JOIN B AS B_1 ON A.id_A = B_1.id_B) LEFT JOIN B AS B_2 ON A.id_A = B_2.id_B) LEFT JOIN B AS B_3 ON A.id_A = B_3.id_B
    WHERE B_1.[Nom]<B_2.[Nom] AND B_2.[Nom]<B_3.[Nom] 
    AND (SELECT COUNT(Nom) FROM B WHERE B.id_B= id_A) >=3
    AND B_3.Nom IN (SELECT TOP 3 Nom FROM B WHERE B.id_B= id_A)
     
    UNION
     
    SELECT A.Desc, B_1.nom, B_2.nom, NULL
    FROM (A LEFT JOIN B AS B_1 ON A.id_A = B_1.id_B) LEFT JOIN B AS B_2 ON A.id_A = B_2.id_B
    WHERE B_1.[Nom]<B_2.[Nom]
    AND (SELECT COUNT(Nom) FROM B WHERE B.id_B= id_A) =2
     
    UNION
     
    SELECT A.Desc, B_1.nom, NULL, NULL
    FROM A LEFT JOIN B AS B_1 ON A.id_A = B_1.id_B
    WHERE (SELECT COUNT(Nom) FROM B WHERE B.id_B= id_A) = 1
     
    UNION SELECT A.Desc, NULL, NULL, NULL
    FROM A WHERE (SELECT COUNT(Nom) FROM B WHERE B.id_B= id_A) = 0;
    Ceci permet de renvoyer maximum 3 noms.
    Je pense qu'une regle est importante: les noms d'une même description doivent être différents.

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

Discussions similaires

  1. Requete jointure sur 2 tables
    Par Silvia12 dans le forum Développement
    Réponses: 4
    Dernier message: 25/04/2013, 11h04
  2. [AC-2003] Jointure sur une seule table
    Par DonKnacki dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/02/2011, 16h06
  3. Regroupement et jointure sur une seule table
    Par vinamis dans le forum Développement
    Réponses: 6
    Dernier message: 24/09/2009, 15h53
  4. problème requete imbriqué sur une seule table
    Par vanhouten dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/01/2009, 17h35
  5. Réponses: 15
    Dernier message: 14/04/2006, 16h34

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