2010-11-26 4 views
2

J'ai actuellement du code PHP qui exécute une seule requête complexe, avec des sous-requêtes, dans l'espoir de trouver 12 enregistrements correspondants. Si moins de 12 enregistrements sont renvoyés, le code exécute une deuxième version de la même requête, avec une clause WHERE légèrement modifiée, à ajouter aux enregistrements précédemment récupérés par la première requête. Il continue à exécuter des versions modifiées de la requête jusqu'à ce qu'un total de 12 enregistrements soit assemblé.Puis-je exécuter des sous-requêtes MySQL successives sous condition?

Je sais que je pourrais combiner les multiples requêtes - il y en a actuellement cinq - avec UNION, mais toutes les requêtes seront exécutées même si la première requête de l'union réussit à renvoyer 12 enregistrements. Puisque chaque requête est complexe, je ne veux pas gaspiller les ressources. Est-ce que MySQL sait s'arrêter d'exécuter des sous-requêtes une fois LIMIT atteint?)

Existe-t-il un moyen en MySQL d'accomplir ce que je suis en train de faire en PHP? Par exemple, comment puis-je avoir une requête avec cinq sous-requêtes, et progresser dans les sous-requêtes successives seulement si les sous-requêtes précédentes ne produisent pas le nombre désiré?

+1

une procédure stockée ne le ferait-elle pas? –

Répondre

1

Vous pouvez créer un stored procedure sur le serveur qui effectue cette vérification assez simplement.

+0

@ Ólafur: Merci. –

+0

De rien. –