Mysql et les sous-requêtes...

Mysql et les sous-requêtes... - SQL/NoSQL - Programmation

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 !  
 :sweat:  
 
PS : j'ai cherché sur le forum, sur google et pas trouvé...  :whistle:

Reply

Marsh Posté le 17-12-2002 à 22:39:00   

Reply

Marsh Posté le 17-12-2002 à 23:03:23    

Par une jointure [:proy]  
 
select table1.id
from table1, table2
where table1.id = table2.zid
  and table2.tid = 'x'

Reply

Marsh Posté le 17-12-2002 à 23:19:18    

Ha ba vi, tu as raison...
Comme quoi, je cherchais trop compliqué.  ;)  
 
Merci  :jap:

Reply

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 ?

Reply

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 ?

Reply

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...

Reply

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"..  :??:

Reply

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.


Message édité par mrbebert le 22-12-2002 à 17:17:06
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed