|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Vincent Ingénieur développement logiciels Inscription : août 2002 Messages : 237 ![]() |
Bonjour,
Je souhaiterai rassembler plusieurs colonnes en une seule liste dans un select. Le pourquoi est que je voudrais faire un Code :
SELECT * FROM table1 WHERE id IN (SELECT id1, id2, id3 FROM table2) En vous remerciant d'avance. Cordialement Boutss Version BDD -> Oracle9i |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
Code :
SELECT * FROM table1 T1 WHERE EXISTS (SELECT 1 FROM TABLE T2 WHERE T1.id=T2.ID1 OR T1.id=T2.ID2 OR T1.ID=T3.OD3)
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Vincent Ingénieur développement logiciels Inscription : août 2002 Messages : 237 ![]() |
Merci nuke_y,
Mais en fait c'est cette façon, qui fonctionne, que je ne veux pas utiliser car elle rend beaucoup trop lourde la requête car pour chaque élément de la table T1 on va aller scanner la table T2. Alors je voudrais récupérer les données de la table T2 une fois pour toute et ensuite seulement passer le filtre. Merci |
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Vincent Ingénieur développement logiciels Inscription : août 2002 Messages : 237 ![]() |
Bon une solution pas très propre mais qui fonctionne est UNION ALL :
Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Tu devrais comparer ta requête avec celle de nuke_y (regarde les consistent_gets en mode "set autotrace on"), car contrairement à toi, je ne pense pas du tout qu'elle soit moins couteuse...
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 812 ![]() |
Ouaih rémi, mais dès qu'on parle de EXISTS tu n'es plus objectif
__________________
Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes. Mon combat pour les droits des consommateurs face aux abus des grandes marques. |
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() Inscription : avril 2006 Messages : 1 024 ![]() |
Citation:
|
|
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2005 Messages : 62 ![]() |
perso je ferai un peu comme bouts
SELECT * FROM table1 a, (SELECT ID1 id FROM table2 WHERE <clause> Union SELECT ID2 FROM table2 WHERE <clause> Union SELECT ID3 FROM table2 WHERE <clause>) b WHERE a.id=b.id mais bon faut voir la masse des donnees etc, si ca ne retourne pas trop le exists devrait mieux s'en sortir |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com