Bonjour,
J'ai un petit soucis sur une requète qui s'exexute sur un serveur MySQL (derniere version ou pas loin).
J'aimerais faire quelque chose du genre :
La requete imbriquée est nécessaire car une de ses clause WHERE porte sur un id recupéré de la requète principale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT .... FROM .... WHERE (1,2,3,4....) IN (SELECT -requete imbriquée-...)
Malheureusement le (1,2,3,4) IN ne fonctionne pas.
Pour l'instant je peux seulement faire :
Cela fonctionne, mais évidemment niveau perf ça doit vraiment pas être terrible (je vais essayer de faire des tests sur une base de données un peu gonflée, pour voir...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT .... FROM .... WHERE 1 IN (SELECT ...) AND 2 IN (SELECT ...) AND 3 IN (SELECT ...) AND 4 IN (SELECT ...)
J'ais bien tenté un truc du genre :
Mais ça ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT .... FROM .... WHERE 1 IN (SELECT ...) as REQ AND 2 IN REQ AND 3 IN REQ AND 4 IN REQ
Y t-il une solution à mon problème ? (réutilisation de la requete imbriquée sans la rééxécuter, manipulation sur les ensembles)
MySQL étant plutot pauvre au niveau des optérations sur les ensembles, il semble que je ne puisse pas faire une "division" (un NOT IN suivis d'un MINUS me semble t-il)
Je vais peut être devoir passer à PostgreSQL.
Merci d'avance pour votre aide.
Partager