Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2011, 10h32   #1
Nouveau Membre du Club
 
Homme Omar Belghiti Alaoui
Étudiant
Inscription : octobre 2010
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Omar Belghiti Alaoui
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 100
Points : 36
Points : 36
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 :
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.
newbe-deve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 11h06   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 653
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 653
Points : 2 655
Points : 2 655
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.
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 11h35   #3
Nouveau Membre du Club
 
Homme Omar Belghiti Alaoui
Étudiant
Inscription : octobre 2010
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Omar Belghiti Alaoui
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 100
Points : 36
Points : 36
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
newbe-deve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 11h43   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 653
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 653
Points : 2 655
Points : 2 655
indiquez la structure de vos table (pk/fk surtout) et sur quelle critère on peut différencier une équipe locale / visiteur
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 11h55   #5
Nouveau Membre du Club
 
Homme Omar Belghiti Alaoui
Étudiant
Inscription : octobre 2010
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Omar Belghiti Alaoui
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 100
Points : 36
Points : 36
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:

table.jpg
newbe-deve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 13h03   #6
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 653
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 653
Points : 2 655
Points : 2 655
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 :
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';
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 15h58   #7
Nouveau Membre du Club
 
Homme Omar Belghiti Alaoui
Étudiant
Inscription : octobre 2010
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Omar Belghiti Alaoui
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 100
Points : 36
Points : 36
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 :
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
newbe-deve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 16h15   #8
Nouveau Membre du Club
 
Homme Omar Belghiti Alaoui
Étudiant
Inscription : octobre 2010
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Omar Belghiti Alaoui
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 100
Points : 36
Points : 36
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é
newbe-deve est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h33.


 
 
 
 
Partenaires

Hébergement Web