Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 31/10/2011, 13h29   #1
Expert Confirmé
 
Avatar de Guigui_
 
Homme
Ingénieur développement logiciels
Inscription : août 2002
Messages : 1 856
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2002
Messages : 1 856
Points : 3 889
Points : 3 889
Par défaut Requête pour récupérer des infos de deux tables avec condition particulière sur l'une

Bonjour,

J'ai une table T_GROUPE (ID_GROUPE, GR_NOM) qui me gère les noms de groupes
J'ai une table T_SPECTACLE (ID_SPECTACLE, SP_ID_GROUPE, SP_DATE) qui me gère les dates de spectacles des groupes (un groupe pouvant donc faire plusieurs dates).

J'aimerais récupérer la liste des noms des groupes avec la date de leur dernier spectacle, le tout en une seule requête SQL.
Est-ce possible ?

Guigui_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 13h35   #2
Membre Expert
 
Avatar de lola06
 
Femme Laure
Consultante en Business Intelligence
Inscription : avril 2007
Messages : 976
Détails du profil
Informations personnelles :
Nom : Femme Laure
Âge : 25
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Consultante en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : avril 2007
Messages : 976
Points : 1 678
Points : 1 678
Bonjour,
C'est effectivement possible.
Lorsque tu as des problèmes pour créer une requête tu la fais en plusieurs fois.

Etape 1 : la jointure des tables

Code :
1
2
3
SELECT G.ID_GROUPE, GR_NOM, ID_SPECTACLE, S.SP_ID_GROUPE, SP_DATE
FROM T_GROUPE G, T_SPETACLE S
WHERE G.ID_GROUPE = S.ID_GROUPE
Etape 2 : la date la plus récente

Code :
1
2
3
4
SELECT G.ID_GROUPE, GR_NOM, MAX(SP_DATE)
FROM T_GROUPE G, T_SPETACLE S
WHERE G.ID_GROUPE = S.ID_GROUPE
GROUP BY G.ID_GROUPE, GR_NOM
Normalement, ça devrait marcher.
__________________
~ Lola ~

Ne pas oublier :
et aussi :
lola06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 13h48   #3
Expert Confirmé
 
Avatar de Guigui_
 
Homme
Ingénieur développement logiciels
Inscription : août 2002
Messages : 1 856
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2002
Messages : 1 856
Points : 3 889
Points : 3 889
Ouahou, quelle rapidité et efficacité !!!
Un grand merci!!

Comme je veux aussi récupérer les groupes qui n'ont jamais fait de concert, j'ai modifié quelque peu la requête:

Code :
1
2
3
SELECT G.ID_GROUPE, GR_NOM, MAX(SP_DATE) AS MAXDATE
FROM T_GROUPE G LEFT OUTER JOIN T_SPECTACLE S ON  G.ID_GROUPE = S.SP_ID_GROUPE 
GROUP BY G.ID_GROUPE, GR_NOM
Logiquement, ca devrait le faire
Guigui_ 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 10h10.


 
 
 
 
Partenaires

Hébergement Web