I am posting this question in response to an answer I recently wrote on this question . The question consists of two tables:
Base:
ID Field
A 1
B 2
D NULL
Join:
ID
A
B
C
D
And here is the desired result:
Output:
ID Newfield
A 1
B 2
C NULL
D None
In other words, we want to distinguish between missing fields due to missing values in Base
, and those fields are missing because they don’t even have ID
one appearing Base
. None
means that was ID
present in Base
with the field NULL
, and NULL
means that we did not even see ID
in Base
. I thought the following query (adapted to ANSI SQL) would work:
SELECT t1.ID, t2.Newfield, t2.ID
FROM `Join` t1
LEFT JOIN
(
SELECT ID, COALESCE(Field, 'None') AS Newfield, Field
FROM Base
) t2
ON t1.ID = t2.ID
ORDER BY t1.ID;
, , C
D
None
. , D
None
, C
NULL
.
- ? , ORDER BY
/, , .