【发布时间】:2013-02-26 20:20:38
【问题描述】:
我要试试这个:
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
它有效...感谢响应者的提示,但我认为他删除了他的答案
【问题讨论】:
-
看起来你真的想要一个连接谓词而不是笛卡尔积,例如:
LEFT JOIN _BestellungsPosition bp ON bp.OrderID = Bestellung.BNr。
标签: mysql subquery where-clause