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 PostgreSQL Discussion :

Récupérer deux lignes dans une seule


Sujet :

Requêtes PostgreSQL

  1. #1
    Invité
    Invité(e)
    Par défaut Récupérer deux lignes dans une seule
    Bonjour,

    Voici mon problème : j'ai une requête qui récupère x lignes et chaque deux lignes ont le même id ce que je veux c'est mettre ces deux lignes qui ont le même id dans une seule j'ai beau chercher mais je ne trouve pas voici ma requête :

    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
    23
    24
    25
    26
    27
    28
    29
    SELECT 
      match.mat_id,
      nation.nat_nom,   
      match.mat_date,  
      joue.nat_essai, 
      joue.nat_trans, 
      joue.nat_penal, 
      joue.nat_drop, 
      match.mat_stade, 
      stade.sta_nom, 
      stade.sta_ville, 
      stade.sta_cap, 
      nation.nat_abr, 
      nation.nat_poule
    FROM 
      public.joue, 
      public.match, 
      public.nation, 
      public.stade
    WHERE 
      match.mat_id = joue.mat_id AND
      nation.nat_id = joue.nat_id AND
      stade.sta_id = match.mat_stade AND
      match.mat_id IN (SELECT  joue.mat_id FROM  public.joue, public.match, public.nation, public.stade
    WHERE 
      match.mat_id = joue.mat_id AND
      nation.nat_id = joue.nat_id AND
      stade.sta_id = match.mat_stade AND
      nation.nat_nom = 'Nouvelle-Zelande');
    Ici j'ai les infos des matchs de l'équipe 'Nouvelle-Zelande' et après chaque ligne il y a les informations de l'adversaire donc ce que je veux c'est que les infos de l'adversaire soit dans la même ligne

    Merci.
    Dernière modification par al1_24 ; 24/11/2011 à 10h51. Motif: Grammaire, orthographe, balises [CODE]

  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,


    il faut faire une requete pour votre équipe locale et joindre ceci avec les données de l'équipe extérieur.

    C'est pas terrible vu que vous allez faire 2 fois plus de jointure pour le même résultat.

    Vous devriez traiter ceci côté applicatif.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par punkoff Voir le message
    bonjour,


    il faut faire une requete pour votre équipe locale et joindre ceci avec les données de l'équipe extérieur.

    C'est pas terrible vu que vous allez faire 2 fois plus de jointure pour le même résultat.

    Vous devriez traiter ceci côté applicatif.
    Oui c'est ce que je doit faire, Mais je sais pas qu’es-que je doit utilisé pour ça ( Coté applicatif c'est mort parce que c'est un TP et je doit rendre que des requête ) du coup j'ai besoin de savoir comment faire en SQL

    Merci

  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
    indiquez la structure de vos table (pk/fk surtout) et sur quelle critère on peut différencier une équipe locale / visiteur

  5. #5
    Invité
    Invité(e)
    Par défaut La Structure des Tables:
    Citation Envoyé par punkoff Voir le message
    indiquez la structure de vos table (pk/fk surtout) et sur quelle critère on peut différencier une équipe locale / visiteur
    Voici La Structure:

    Pièce jointe 85400

  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
    oki, reprenons :
    - mise à niveau de la syntaxe au niveau des jointures à la norme SQL de 1992
    - on enlève le "IN" qui ne sert à rien
    - on rajoute la deuxième jointure pour avoir les infos suplémentaire

    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
    23
    24
     
    SELECT 
      match.mat_id,
      nation.nat_nom,   
      match.mat_date,  
      joue.nat_essai, 
      joue.nat_trans, 
      joue.nat_penal, 
      joue.nat_drop, 
      match.mat_stade, 
      stade.sta_nom, 
      stade.sta_ville, 
      stade.sta_cap, 
      nation.nat_abr, 
      nation.nat_poule,
      joue2.nat_essai,
      ....
    FROM 
      public.joue 
      inner join public.match on match.mat_id = joue.mat_id
      inner join public.nation on nation.nat_id = joue.nat_id
      inner join public.stade on stade.sta_id = match.mat_stade
      inner join public.joue joue2 on joue.mat_id = joue2.mat_id and joue.nat_id <> joue2.nat_id
    WHERE nation.nat_nom = 'Nouvelle-Zelande';

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci Pour Votre réponse j'ai essayé de faire la même chose pour avoir le nom de l’équipe adverse mais il ne me donne pas d'entrée donc je présume que j'ai une faute dans ce que j'ai ajouté je vais essayer de manipuler pour avoir ce que je veux mais si vous pouvez me donner un indice pour avancer ça serait sympa
    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
    23
    24
    25
    26
    27
    SELECT
      match.mat_id,
      match.mat_date,
      nation.nat_nom,
      joue.nat_essai, 
      joue.nat_trans, 
      joue.nat_penal, 
      joue.nat_drop, 
      nation2.nat_nom,
      joue2.nat_essai,
      joue2.nat_trans, 
      joue2.nat_penal, 
      joue2.nat_drop,
      match.mat_stade, 
      stade.sta_nom, 
      stade.sta_ville, 
      stade.sta_cap, 
      nation.nat_abr, 
      nation.nat_poule
    FROM 
      public.joue 
      INNER JOIN public.match ON match.mat_id = joue.mat_id
      INNER JOIN public.nation ON nation.nat_id = joue.nat_id
      INNER JOIN public.stade ON stade.sta_id = match.mat_stade
      INNER JOIN public.joue joue2 ON joue.mat_id = joue2.mat_id AND joue.nat_id <> joue2.nat_id
      INNER JOIN public.nation nation2 ON nation.nat_id = nation2.nat_id AND joue2.nat_id = nation2.nat_id
    WHERE nation.nat_nom = 'Nouvelle-Zelande';
    Je vous remercie pour votre aide
    Dernière modification par al1_24 ; 24/11/2011 à 16h55.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par newbe-deve Voir le message
    Merci Pour Votre réponse j'ai essayer de faire la même chose pour avoir le nom de l’équipe adverse mais il me donne pas d'entré donc je présume que j'ai une faute dans ce que j'ai ajouté je vais essayer de manipuler pour avoir ce que je veux mais si vous pouvez me donnez un indice pour avancé ça serai sympa
    SELECT
    match.mat_id,
    match.mat_date,
    nation.nat_nom,
    joue.nat_essai,
    joue.nat_trans,
    joue.nat_penal,
    joue.nat_drop,
    nation2.nat_nom,
    joue2.nat_essai,
    joue2.nat_trans,
    joue2.nat_penal,
    joue2.nat_drop,
    match.mat_stade,
    stade.sta_nom,
    stade.sta_ville,
    stade.sta_cap,
    nation.nat_abr,
    nation.nat_poule
    FROM
    public.joue
    INNER JOIN public.match ON match.mat_id = joue.mat_id
    INNER JOIN public.nation ON nation.nat_id = joue.nat_id
    INNER JOIN public.stade ON stade.sta_id = match.mat_stade
    INNER JOIN public.joue joue2 ON joue.mat_id = joue2.mat_id AND joue.nat_id <> joue2.nat_id
    INNER JOIN public.nation nation2 ON nation.nat_id = nation2.nat_id AND joue2.nat_id = nation2.nat_id
    WHERE nation.nat_nom = 'Nouvelle-Zelande';

    Je vous remercie pour votre aide
    C bon C'est Résolu j'ai mis joue2 a la place de nation c'est plus logique merci pour votre aide bonne journé

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/08/2012, 16h07
  2. [BASH]deux commandes dans une seule ligne
    Par vbcasimir dans le forum Linux
    Réponses: 4
    Dernier message: 28/09/2010, 20h07
  3. Plusieurs lignes dans une seule
    Par rlnd23 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2007, 16h35
  4. integrer deux requetes dans une seule requete access
    Par laurent.w dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/12/2006, 15h11
  5. ecrire sur deux ligne dans une button
    Par zidenne dans le forum Delphi
    Réponses: 5
    Dernier message: 27/07/2006, 10h23

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