Bonjour,
pour certaine raisons jai besoin dexploser une requete en plusieurs, je sais quil est possible de faire select * IN(subquery) ou encore where exists(select), mais ce n'est pas ce que je veux faire, ni ce dont jai besoin svp.
Comment construire une requete ou le resultat de la premiere est utilisé dans la clause IN de la deuxieme au sein d'une meme procédure ?
Dans l'idéal ma requete2 ressemblerait à SELECT stuf where IN(id,id,id,longlistid,..)
requete1 => select stuff as result1
requete2 => select otrestuff where bob IN(result1).
J'ai pensé utilisée les racourci mais.. voila mon essaie :
update
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE PROCEDURE `exemple`() BEGIN SELECT @query1 := `foo` FROM `table` WHERE `stuf`= 'cat' UNION ALL SELECT `foo` FROM `table` WHERE `dog`= 'hard' ; SELECT please FROM help WHERE me IN(@query1) ; END
Et voici ma deuxieme direction , déclarer une variable locale pour insérer les premiers résultats
et les utiliser dans la deuxieme, ce qui renvoie l'erreur logique :
Error Code: 1172. Result consisted of more than one row
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CREATE PROCEDURE `exemple`() BEGIN DECLARE resultquery1 VARCHAR(5000); SELECT `id` FROM `table` WHERE `stuf`= 'cat' UNION ALL SELECT `id` FROM `table` WHERE `dog`= 'hard' INTO resultquery1 ; SELECT please FROM help WHERE me IN(resultquery1) ; END
Partager