Filtrer dans une table à partir de deux autres tables
Bonjour a tous,
Cela fait plusieurs jours que je m'arrache les cheveux sur un problème. je suis sur qu'il y a une solution simple mais impossible de la trouver...
voila mon probleme
J'ai trois table :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
container :
id content
1 'aaa'
2 'bbb'
3 'ccc'
4 'ddd'
5 'eee'
6 'fff'
7 'ggg'
8 'hhh'
9 'iii'
10 'jjj' |
Code:
1 2 3 4 5 6 7
|
tmp1 :
id
2
3
4
5 |
Code:
1 2 3 4 5 6 7
|
tmp2 :
id
3
4
5
6 |
j'ai besoin de filtrer de deux façons dans dans la table container grace au tables tmp1 et tmp2 (sachant qu'il peut y en avoir plus) :
Code:
1 2 3 4 5
|
SELECT container.*
FROM container
INNER JOIN tmp1 ON tmp1.id = container.id
INNER JOIN tmp2 ON tmp2.id = container.id |
ce qui me donne le résultat suivant :
Code:
1 2
|
array( [id=>3, content:'ccc'], [id=>4, content:'ddd'], [id=>5, content:'eee'] ) |
maintenant j'ai besoin d'afficher ce résultat :
Code:
1 2
|
array( [id=>2, content:'bbb'], [id=>3, content:'ccc'], [id=>4, content:'ddd'], [id=>5, content:'eee'], [id=>6, content:'fff'] ) |
j'ai trouvé ces deux solutions mais celles si sont bien trop gourmandes en ressource :
Code:
1 2 3 4 5 6
|
SELECT container.*
FROM container
LEFT JOIN tmp1 ON tmp1.id = container.id
LEFT JOIN tmp2 ON tmp2.id = container.id
WHERE tmp1.id IS NOT NULL OR tmp2.id IS NOT NULL |
Code:
1 2 3 4 5 6 7 8
|
SELECT container.*
FROM container
JOIN tmp298227
JOIN tmp193427
WHERE container.i_autocode = tmp298227.i_containercode
OR container.i_autocode = tmp193427.i_containercode
GROUP BY container.i_autocode |
Quelqu'un aurait la bonté de me donner une solution miracle ?
Mille mercis pour votre aide !!!