1

我要试试这个:

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

它有效......感谢有这个提示的响应者,但我认为他删除了他的答案

4

2 回答 2

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

它有效......感谢有这个提示的响应者,但我认为他删除了他的答案

于 2013-07-29T13:12:30.033 回答
0

您需要在子查询中指定要选择(或排除)的 ID,这可能效率低下。在下面试试这个:

SELECT
    ID, Customer, SalesPerson, Clerk, Date
FROM `Order`
WHERE ID NOT IN
    (SELECT DISTINCT OrderID FROM OrderItem);
于 2013-02-26T20:28:41.900 回答