在我的数据库中,我有一个"销售"表和一个"sales_item".有时,出现问题并且销售被记录但不是销售项目.
所以我试图从我的表"sales"中获取sales_item表中没有任何行的salesID.
这是我认为可以工作的mysql查询,但它没有:
SELECT s.*
FROM sales s NATURAL JOIN sales_item si
WHERE s.date like '" . ((isset($_GET['date'])) ? $_GET['date'] : date("Y-m-d")) . "%'
AND s.sales_id like '" . ((isset($_GET['shop'])) ? $_GET['shop'] : substr($_COOKIE['shop'], 0, 3)) ."%'
HAVING count(si.sales_item_id) = 0;
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
Tob*_* P. 15
表别名v的来源是什么?显示表定义将是一个非常好的主意;)
它必须是左连接:
SELECT *
FROM table1
LEFT JOIN table2 ON(table1.id = table2.table1_id)
WHERE table2.table1_id IS NULL
Run Code Online (Sandbox Code Playgroud)
表1是您的销售表,表2是sales_item
一直与 Group By 一起使用
GROUP BY si.sales_item_id
HAVING count(si.sales_item_id) = 0;
Run Code Online (Sandbox Code Playgroud)
您不需要加入表,您可以使用类似以下内容:
[...] WHERE sales.id NOT IN (SELECT sales_id FROM sales_item)
Run Code Online (Sandbox Code Playgroud)
这仅过滤没有任何对应 sales_item 条目的销售。