Requête sql : besoin d'aide

  • Auteur de la discussion Auteur de la discussion OTP
  • Date de début Date de début
WRInaute accro
Bonsoir,

J'ai une table 'data_parc' qui contient entre autres les champs 'parc', 'developpeur' et 'pays'.
Exemple : Parc1 Developpeur1 France

J'ai une table 'data_pays' qui contient entre autre 'nom_pays' et 'continent_du_pays'.
Exemple : France Europe

Je veux la liste des 'developpeur' qui sont dans la base 'data_parc' pour seulement les cas où le 'pays' est dans le continent 'Europe'.

Comment puis-je écrire ça ? J'ai regardé les JOIN et compagnie et je nage...

Merci d'avance,

Michaël
 
WRInaute accro
Code:
select distinct developpeur 
from data_parc 
where exists
 (select * 
 from data_pays 
 where data_parc.pays = data_pays.pays 
 and data_pays.continent = 'Europe');

J'ai pas vérifié mais ça marcherait ? :)
 
WRInaute accro
Comment ça sur une seule ligne ?

Oui tu veux dire faire une seule ligne avec la requête ? Mais tu es pas obligé, tu peux faire des passages à la ligne dans tes requêtes ! C'est beaucoup plus clair après
 
WRInaute accro
Oui c'est une seule, essaie la dans phmmyadmin et dis l'erreur que tu as si il y en a une.

Sinon, tu peux exporter la structure de tes tables avec quelques données et donner le script qui en ressort, comme ça je pourrai construire les table directement pour tester et avoir le bon résultat ^^
 
WRInaute accro
Ho première fois que je fais pas de faute du premier coup alors :D Merci à toi de t'occuper de mon entrainement pour pas perdre la main :p
 
WRInaute accro
YoyoS a dit:
Merci à toi de t'occuper de mon entrainement pour pas perdre la main :p

Ok, je ne vais pas t'oublier !

PS : j'ai juste ajouté des ( ) mais je ne sais pas si c'est indispensable.
 
WRInaute accro
En fait oui, c'est possible que mysql râle pour des parenthèses :D mais dans ce cas la je crois pas que ça pose problème sans parenthèses.
 
WRInaute passionné
Hello,

sans vouloir être casse pied, pourquoi ne pas faire une simple jointure ?

Code:
select a.developpeur 
from data_pays y
join data_parc a on y.pays = a.pays
where y.continent = 'Europe'

Et à priori il n'y a même pas besoin du distinct.
 
WRInaute passionné
Oui, je pencherais pour un truc tout bête du style :
Code:
SELECT distinct developpeur
FROM data_parc, data_pays
WHERE  data_parc.pays = data_pays.nom_pays
AND data_pays.continent_du_pays='Europe';
 
WRInaute accro
Oui c'est vrai, mais quand on ne me spécifie pas que ce sont des clés primaires, je ne prends pas de risques et j'utilise un exists, qui fonctionne tout le temps. Puis j'avais envie, j'ai pas le droit ? :D

La jointure est faisable aussi évidemment, mais il n'y a pas une solution mieux que l'autre que je sache. Par contre le distinct, à mon avis il le faut. "Sa clé primaire" doit être une clé composée du parc et du développeur.
 
WRInaute passionné
YoyoS a dit:
Oui c'est vrai, mais quand on ne me spécifie pas que ce sont des clés primaires, je ne prends pas de risques et j'utilise un exists, qui fonctionne tout le temps. Puis j'avais envie, j'ai pas le droit ? :D
Hihi, tu ne cours pas beaucoup de risque avec cette jointure, mais tu as le droit de te faire plaisir. :)

YoyoS a dit:
Par contre le distinct, à mon avis il le faut. "Sa clé primaire" doit être une clé composée du parc et du développeur.
J'ai un peu de mal à suivre ta logique ici... :roll:
 
WRInaute accro
OTP a dit:

J'ai une table 'data_parc' qui contient entre autres les champs 'parc', 'developpeur' et 'pays'.
Exemple : Parc1 Developpeur1 France

- Peut-être qu'il y a plusieurs parcs développés par la même personne ?
- Peut-être qu'il y a plusieurs developpeurs sur le même parc ?

Bref :p
 
WRInaute passionné
YoyoS a dit:
OTP a dit:

J'ai une table 'data_parc' qui contient entre autres les champs 'parc', 'developpeur' et 'pays'.
Exemple : Parc1 Developpeur1 France

1)- Peut-être qu'il y a plusieurs parcs développés par la même personne ?
2)- Peut-être qu'il y a plusieurs developpeurs sur le même parc ?

Bref :p
Ta 1ère hypothèse justifie l'emploi d'un distinct mais ne correspond pas à un cas de concaténation des champs 'parc' et 'développeur' pour former la clé primaire de data_parc,
Ta seconde hypothèse, si elle se justifiait, me laisserait penser que la base de données doit être repensée.
 
WRInaute accro
YoyoS a dit:
- Peut-être qu'il y a plusieurs parcs développés par la même personne ?
Oui, en effet.

YoyoS a dit:
- Peut-être qu'il y a plusieurs developpeurs sur le même parc ?
Non.

[mode troll]
Peu importe la requête pour moi tant qu'à la fin j'ai ce que je veux !
[/mode]

Merci à tous !
 
Discussions similaires
Haut