Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 08/10/2006, 16h29   #1
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 93
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 93
Points : 26
Points : 26
Par défaut [SQL] compter les éléments distincts dans une requête

Bonjour!

J'ai un problème avec une requête.

Tout d'abord, il s'agit de faire un site répertoriant les concerts d'un chanteur;
voici un shéma d'un partie de ma base

Je souhaite savoir le nombre de pays visités dans une tournée tournée donnée.

Pour cela, je pensais d'abord faire une requête pour lister les pays concernées:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT tb_concert.id_leg,
 tb_leg.id_leg,
tb_leg.id_tournee,
tb_concert.id_salle,
tb_salle.id_salle,
tb_salle.id_ville,
tb_ville.id_ville,
tb_ville.id_pays,
tb_pays.id_pays,
tb_pays.pays
FROM tb_concert, tb_leg, tb_salle, tb_ville, tb_pays
WHERE tb_concert.id_leg = tb_leg.id_leg
AND tb_leg.id_tournee = $id_tour_recherche
AND tb_concert.id_salle = tb_salle.id_salle
AND tb_salle.id_ville = tb_ville.id_ville
AND tb_ville.id_pays = tb_pays.id_pays
Ensuite et surtout, je pensais utiliser cette requête en sous requête pour compter les pays distincts:

Code :
1
2
3
SELECT COUNT (DISTINCT tb_pays.id_pays) AS nbr_pays
FROM tb_pays
WHERE tb_pays.id_pays IN ma_requête_ci_dessus
On peut agencer un count et un distinct comme ça?
Je peux utiliser ma sous requête de cette manière?


Merci !
redwire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2006, 17h10   #2
Membre confirmé
 
Développeur Web
Inscription : octobre 2006
Messages : 251
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2006
Messages : 251
Points : 268
Points : 268
Cadeau:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT COUNT(DISTINCT id_pays)
FROM tb_ville
WHERE id_ville IN(
	SELECT id_ville 
	FROM tb_salle 
	WHERE idsalle IN(
		SELECT idsalle
		FROM tb_concert
		WHERE id_leb IN (
			SELECT id_leg_tournee 
			FROM tb_leg 
			WHERE id_tournee = $id_tour_recherche)));
Par contre de là a dire que ça marche, tout dépend la version de ta base de donnée
benji07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2006, 17h44   #3
Nouveau Membre du Club
 
Inscription : juillet 2005
Messages : 93
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 93
Points : 26
Points : 26
Je viens d'essayer ça, apparament ça me convient sans sous requête:

Code :
1
2
3
4
5
6
SELECT COUNT( DISTINCT tb_ville.id_pays ) AS nbr_pays
FROM tb_concert, tb_leg, tb_salle, tb_ville
WHERE tb_concert.id_leg = tb_leg.id_leg 
AND tb_leg.id_tournee = $id_tour 
AND tb_concert.id_salle = tb_salle.id_salle 
AND tb_salle.id_ville = tb_ville.id_ville
redwire 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 17h06.


 
 
 
 
Partenaires

Hébergement Web