Merci pour les bonnes réponses!Sélection avec des sous-requêtes dans MySQL (Sous-requêtes avec ANY, et IN)
Pour plus d'informations
Il est difficile d'expliquer, donc permet de définir la scène ...
userActions userGroupMap
+------+--------+ +------+-------+
| user | action | | user | group |
+------+--------+ +------+-------+
| x | acted! | | x | a |
| y | acted! | | y | a |
| y | acted! | | z | b |
| z | acted! | +------+-------+
| y | acted! |
| z | acted! |
| x | acted! |
| z | acted! |
+------+--------+
Je souhaite sélectionner les actions du groupe a. Mon idée était de
SELECT actions, user FROM userActions
WHERE user = (SELECT user, group FROM userGroupMap WHERE group = a)
Mais évidemment, cette sous-requête renvoie plus d'une ligne. Devrais-je utiliser un JOIN?
Subquery returns more than 1 row
Merci! Avec votre réponse j'ai obtenu mes résultats sans faille. J'apprécie également la note sur les grandes tables (c'est pourquoi j'ai accepté votre réponse). Pouvez-vous expliquer pourquoi vous avez mis le groupe entre parenthèses - "[groupe]"? – Blaine
Il n'y a aucune raison évidente pour laquelle cela nécessite une sous-requête; une jointure interne droite avec la clause WHERE de filtrage devrait également faire le travail. –
@Blaine: Je mets [group] entre parenthèses car son mot-clé et certains SGBD flippent si les mots-clés utilisés comme noms de colonne/table ne sont pas explicitement indiqués. La même raison que je mettrais [table] entre parenthèses. @Jonathan Leffler: Vous avez raison, je pense que j'étais juste distrait par la question et l'utilisation de sous-requêtes. – achinda99