Quand j'exécute le code suivant, je reçois des résultats tels que:Comment construire correctement la sous-requête SQL dans ce code?
ID column1 column2
34 NULL NULL
34 Org13 Org13
36 NULL NULL
36 NULL Org2
36 Org4 NULL
41 NULL NULL
41 NULL Org5
41 Org3 NULL
Je veux que mes résultats ressemblent:
ID column1 column2
34 Org13 Org13
36 Org4 Org2
41 Org3 Org5
J'ai deux tables: Table1 et Table2. La table 2 est une table de recherche avec les champs suivants: id, name
Le tableau 1 comporte les champs suivants (id, column1, column2). colonne1 et colonne2 les deux ont des relations clés étrangères à la table de recherche:
FK_1: Table1.column1-Table2.id
FK_2: Table1.column2-Table2.id
Comme je veux retirer les valeurs de colonne1 et colonne2, et puisque ces deux valeurs sont sur le même lookups champ (Table2.name) , Je soupçonne que j'ai besoin de faire des sélections intérieures.
Mon code est ci-dessous. Comment puis-je changer cela afin qu'il produise les résultats souhaités, au lieu de ceux que je reçois? Merci d'avance!
DECLARE @value INT
SET @value = 14
SELECT DISTINCT
Table1.[id] AS ID
, (SELECT DISTINCT
Table2.[name]
WHERE
Table1.column1 =
Table2.id) AS column1
, (SELECT DISTINCT
Table2.[name]
WHERE
Table1.column2 =
Table2.id) AS column2
FROM
Table1
,Table2
WHERE
Table1.[id] = @value
Merci beaucoup! – Cuga
Si column1 et/ou column2 sont nullables, vous pouvez utiliser des jointures à gauche au lieu de jointures internes afin de ne pas perdre de lignes. –
Merci pour le heads-up. Dans ce cas particulier, ils ne sont pas Nullable, mais je garderai votre avis en tête =) – Cuga