好的,我正在尝试查询一个图书馆,该图书馆将显示哪些学生从未借过书。为此,我做了以下工作:
SELECT
LEERLINGEN.LLNR,
LEERLINGEN.VOORNAAM,
LEERLINGEN.TUSSENVOEGSEL,
LEERLINGEN.ACHTERNAAM,
LEERLINGEN.KLAS,
COUNT(*) AS AANTAL
FROM
UITLENINGEN
INNER JOIN LEERLINGEN ON UITLENINGEN.LLNR = LEERLINGEN.LLNR
GROUP BY
LEERLINGEN.LLNR,
LEERLINGEN.VOORNAAM,
LEERLINGEN.TUSSENVOEGSEL,
LEERLINGEN.ACHTERNAAM,
LEERLINGEN.KLAS
HAVING
COUNT(*) = 0;
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这似乎不起作用,因为它所做的只是在我单击时创建一个空表Execute。
我在这里做错了什么?
你需要使用外连接,否则你不会让那些没有借书的学生回来。
然后你需要在学生表上 count() ,而不是“组”(这是在你使用时完成的(*)
)
SELECT
LEERLINGEN.LLNR,
LEERLINGEN.VOORNAAM,
LEERLINGEN.TUSSENVOEGSEL,
LEERLINGEN.ACHTERNAAM,
LEERLINGEN.KLAS,
COUNT(LEERLINGEN.LLNR) AS AANTAL
FROM
LEERLINGEN
LEFT OUTER JOIN UITLENINGEN ON UITLENINGEN.LLNR = LEERLINGEN.LLNR
GROUP BY
LEERLINGEN.LLNR,
LEERLINGEN.VOORNAAM,
LEERLINGEN.TUSSENVOEGSEL,
LEERLINGEN.ACHTERNAAM,
LEERLINGEN.KLAS
HAVING
COUNT(UITLENINGEN.LLNR) = 0;
Run Code Online (Sandbox Code Playgroud)
我不知道 MS-Access,但我认为它支持使用标准 SQL 的外部联接。
翻译表名后,我认为这会起作用:
SELECT
LEERLINGEN.LLNR,
LEERLINGEN.VOORNAAM,
LEERLINGEN.TUSSENVOEGSEL,
LEERLINGEN.ACHTERNAAM,
LEERLINGEN.KLAS
FROM
LEERLINGEN
LEFT OUTER JOIN UITLENINGEN ON UITLENINGEN.LLNR = LEERLINGEN.LLNR
WHERE
UITLENINGEN.LLNR IS NULL;
Run Code Online (Sandbox Code Playgroud)
编辑:
您正在寻找根本没有 UITLENINGEN 的 LEERLINGEN。检查这个替代方案:
SELECT
LEERLINGEN.LLNR,
LEERLINGEN.VOORNAAM,
LEERLINGEN.TUSSENVOEGSEL,
LEERLINGEN.ACHTERNAAM,
LEERLINGEN.KLAS
FROM
LEERLINGEN
WHERE NOT EXISTS (
SELECT 1 FROM UITLENINGEN WHERE LLNR = LEERINGEN.LLNR
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
827 次 |
最近记录: |