SELECT T.[NAME] FROM (
SELECT Unregistered.[NAME]
FROM Unregistered
LEFT JOIN [Event] ON Event.ID = Unregistered.EventID
WHERE EventID IN (
SELECT EventID
FROM Registered WHERE [NAME] Like '%blabla%')
UNION ALL
SELECT Registered.[NAME]
FROM Registered
LEFT JOIN [Event] ON Event.ID = Registered.EventID
WHERE EventID IN (
SELECT EventID
FROM Registered WHERE [NAME] Like '%blabla%')
) AS T
Donc, j'ai une table, appelons-la Evénements liés aux tables non enregistrées et enregistrées. Je veux sélectionner toutes les lignes non enregistrées et enregistrées dans tout événement trouvé par le contenu de ce tableau enregistré.SQL, requêtes imbriquées, sous-requêtes, requêtes corrélées
Les tables non enregistrées et enregistrées ont plusieurs entrées (ou aucune) avec le même ID d'événement. Ceci est juste le contenu de la démo et les noms, mais le problème est réel.
Vous voyez le problème, ici j'ai besoin de demander deux fois pour la plage d'ID, comment puis-je faire cela dans une requête et utiliser le résultat dans les deux déclarations d'union? Comme dans quoi est le moyen le meilleur et le plus efficace d'effectuer une requête pour la sortie?
C'est MS SQL Server.
Merci!
Est-ce SQL Server? Postgres? MySQL? Oracle? –
Pourquoi sont-ils stockés dans deux tables, quand il devrait être un avec un code de type pour différencier enregistré/non enregistré ?! –
Son MS SQL. Ne vous inquiétez pas du contenu, c'est un exemple (plus) simplifié du problème, j'essaie de trouver quelle est la meilleure façon d'effectuer une telle requête pour la sortie. Néanmoins, c'est la structure des tables et le type de problème. – Hellodear