我要试试这个:
SELECT
Bestellung.ID BNr,
RechnAddr Kunde,
(SELECT
Name
FROM `User`
WHERE ID = Bestellung.SalesPerson) Verkaeufer,
Clerk Sachbearbeiter,
(SELECT
Ort
FROM `Location`
WHERE ID = Bestellung.Location) Standort,
CONCAT_WS('.', LPAD(Day, 2,'0'), LPAD(Month, 2,'0'), Year) Erstelldatum
FROM `Bestellung`
WHERE
SalesPerson != ''
AND
(SELECT COUNT(*) cnt FROM _BestellungsPosition bp
WHERE bp.OrderID = Bestellung.BNr) = 0
我只想要所有没有订单商品的订单,但mysql告诉我'where子句中的'未知列'Bestellung.BNr'... 我使用子查询错了吗?!
请帮帮我
编辑:我将之前使用的(伪)查询更改为真实查询,因为我的伪查询有效,但真实数据的真实数据没有
edit2:现在我将查询更改为:
SELECT
Bestellung.ID BNr,
RechnAddr Kunde,
(SELECT
Name
FROM `User`
WHERE ID = Bestellung.SalesPerson) Verkaeufer,
Clerk Sachbearbeiter,
(SELECT
Ort
FROM `Location`
WHERE ID = Bestellung.Location) Standort,
CONCAT_WS('.', LPAD(Day, 2,'0'), LPAD(Month, 2,'0'), Year) Erstelldatum
FROM `Bestellung` LEFT JOIN _BestellungsPosition bp
WHERE
SalesPerson != ''
AND
bp.Order IS NULL
并且它有效...感谢响应者提供此提示,但他删除了我认为的答案
答案 0 :(得分:1)
edit2:现在我将查询更改为:
SELECT
Bestellung.ID BNr,
RechnAddr Kunde,
(SELECT
Name
FROM `User`
WHERE ID = Bestellung.SalesPerson) Verkaeufer,
Clerk Sachbearbeiter,
(SELECT
Ort
FROM `Location`
WHERE ID = Bestellung.Location) Standort,
CONCAT_WS('.', LPAD(Day, 2,'0'), LPAD(Month, 2,'0'), Year) Erstelldatum
FROM `Bestellung` LEFT JOIN _BestellungsPosition bp
WHERE
SalesPerson != ''
AND
bp.Order IS NULL
并且它有效...感谢响应者提供此提示,但他删除了我认为的答案
答案 1 :(得分:0)
您需要在子查询中指定要选择(或排除)的ID,这可能效率低下。请尝试以下方法:
SELECT
ID, Customer, SalesPerson, Clerk, Date
FROM `Order`
WHERE ID NOT IN
(SELECT DISTINCT OrderID FROM OrderItem);