Mysql et les sous-requêtes... - SQL/NoSQL - Programmation
Marsh Posté le 17-12-2002 à 23:03:23
Par une jointure
select table1.id
from table1, table2
where table1.id = table2.zid
and table2.tid = 'x'
Marsh Posté le 17-12-2002 à 23:19:18
Ha ba vi, tu as raison...
Comme quoi, je cherchais trop compliqué.
Merci
Marsh Posté le 21-12-2002 à 17:49:43
et si je veux trouver également les id que je ne retrouve pas dans la deuxième table ?
Marsh Posté le 21-12-2002 à 20:56:21
Il faudra surement utiliser un LEFT JOIN.
Tu cherche quoi comme résultat précisément ?
Marsh Posté le 22-12-2002 à 01:37:09
En fait, j'ai désormais :
- une table "projet" référançant tous les projets de ma société, composée d'un ID, d'un nom, d'une description
- une table "lien projet bu" référençant, pour chaque projet, les business units qui y participent. Composé d'un id, de l'id projet et de l'id bu
Je veux pouvoir afficher l'ensemble des projets qui sont rattachés à une bu en particulier + ceux qui ne sont rattachés à aucune bu
Ma requête pour le moment ressemble à :
select distinct table_projet.id from table_projet left, table_buprojet WHERE table_projet.id = table_buprojet.pid AND table_buprojet.buid = $bu
Donc j'ai bien les projets qui correspondent à une BU précise (le $bu) mais pas ceux qui ne sont rattachés à rien...
Marsh Posté le 22-12-2002 à 01:42:17
Et je n'arrive pas à utiliser un LEFT JOIN avec un critère de sélection "dans le cas où le lien existe entre les deux tables"..
Marsh Posté le 22-12-2002 à 17:15:24
SELECT DISTINCT table_projet.id
FROM table_projet
LEFT JOIN table_buprojet ON table_projet.id = table_buprojet.pid
WHERE (table_buprojet.buid = $bu) OR (table_buprojet.buid = NULL)
Un truc comme ca.
On prend toutes les lignes de table_projet, avec les lignes de table_buprojet correspondantes s'il y en a.
Et on ne garde que ceux qui correspondent au $bu qui nous intéresse ou ceux ne correspondant à aucun $bu.
Marsh Posté le 17-12-2002 à 22:39:00
Oui, oui, je sais Mysql ne les supporte pas...
Mais comment contourner le problème... ?
Grosso modo, je voulais faire une requête du style :
"select id from table1 where id in (select zid from table2 where tid = 'x'"
Si vous savez faire.. je suis preneur !
PS : j'ai cherché sur le forum, sur google et pas trouvé...