Blu*_*Fox 1 mysql sql join inner-join
如果客户 ID (KUNDENID) 相同,则 I\xc2\xb4m 尝试将表中的金额相加。
\n\n这是我的两张桌子:
\n\n+----------+------------+--------+\n| KUNDENID | datum | Betrag |\n+----------+------------+--------+\n| 2 | 2013-06-05 | 120.5 |\n| 1 | 2013-02-05 | 20.95 |\n| 3 | 2013-02-05 | 250.3 |\n| 3 | 2013-05-13 | 100 |\n| 4 | 2013-01-01 | 1500 |\n+----------+------------+--------+\n\n+----------+---------+-----------+------------------------------+--------------+-------------+\n| KUNDENID | vorname | nachname | email | geburtsdatum | telefon |\n+----------+---------+-----------+------------------------------+--------------+-------------+\n| 1 | Homer | Simpson | chunkylover53@aol.com | 1956-05-02 | 555-364 |\n| 2 | Doug | Heffernan | doug.heffernan@hotmail.com | 1965-02-09 | 555-3684 |\n| 3 | Dexter | Morgan | dexter.morgan@gmail.com | 1971-02-01 | 555-3684 |\n| 4 | Sheldon | Cooper | sheldoncooper@gmail.com | 1981-04-22 | 555-2274648 |\n| 5 | Maurice | Moss | moss@Reynholm-Industries.com | 1972-03-01 | 555-6677 |\n+----------+---------+-----------+------------------------------+--------------+-------------+\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试了这个内部连接:
\n\nSELECT k.KUNDENID, vorname, nachname, SUM(Betrag) FROM kunde k INNER JOIN verkauf v ON k.KUNDENID = v.KUNDENID GROUP BY k.KUNDENID;\nRun Code Online (Sandbox Code Playgroud)\n\n输出:
\n\n+----------+---------+-----------+------------------+\n| KUNDENID | vorname | nachname | SUM(Betrag) |\n+----------+---------+-----------+------------------+\n| 1 | Homer | Simpson | 20.9500007629395 |\n| 2 | Doug | Heffernan | 120.5 |\n| 3 | Dexter | Morgan | 350.300003051758 |\n| 4 | Sheldon | Cooper | 1500 |\n+----------+---------+-----------+------------------+\nRun Code Online (Sandbox Code Playgroud)\n\n所以我知道 JOIN 是正确的,但我如何向未在同一个 JOIN 中购买任何东西的客户显示?
\n\n我想要的输出:
\n\n+----------+---------+-----------+------------------+\n| KUNDENID | vorname | nachname | SUM(Betrag) |\n+----------+---------+-----------+------------------+\n| 1 | Homer | Simpson | 20.9500007629395 |\n| 2 | Doug | Heffernan | 120.5 |\n| 3 | Dexter | Morgan | 350.300003051758 |\n| 4 | Sheldon | Cooper | 1500 |\n| 5 | Maurice | Moss | 0 |\n+----------+---------+-----------+------------------+\nRun Code Online (Sandbox Code Playgroud)\n\n感谢您的帮助!
\n使用LEFT JOIN而不是INNER JOIN.
SELECT k.KUNDENID, vorname, nachname, IFNULL(SUM(Betrag), 0) AS gesamt\n FROM kunde k\n LEFT JOIN verkauf v ON k.KUNDENID = v.KUNDENID\n GROUP BY k.KUNDENID;\nRun Code Online (Sandbox Code Playgroud)\n\n这是维基百科的基本解释。他们也展示了一个例子。
\n\n\n\n表 A 和 B 的左外连接(或简称左连接)的结果始终包含“左”表 (A) 的所有记录,即使连接条件在表 A 中找不到任何匹配的记录。 “右”表\n (B)。这意味着,如果 ON 子句匹配 B\n 中的 0(零)条记录(对于 A 中的给定记录),连接仍将在\n 结果中返回一行(对于该记录)\xe2\x80\x94,但是B 的每列中均为 NULL。左外连接返回内连接中的所有值以及左表中与右表不匹配的所有值。
\n