【发布时间】:2016-07-20 14:35:42
【问题描述】:
我在客户表中有一些数据,而其他表中没有数据。因此,当我尝试使用以下查询进行选择时,它给了我
1048-列 'customerid' 不能为空
。可能是什么问题呢。有解决办法吗?
SELECT c.*, fd.ruakzat as ruak,
fd.khatzat as khat, 0+0 as belh, 0+0 as neih,
puk.lended as hawh
FROM `customer` c
LEFT JOIN (
SELECT s.customerid, o.orderzat as ruakzat,
f.filled as khatzat
FROM `sale` s
LEFT JOIN (
SELECT SUM(quantity) as orderzat,invoiceno
FROM `order`
WHERE fillstatus='Empty'
GROUP BY invoiceno
) AS o ON s.invoiceno=o.invoiceno
LEFT JOIN (
SELECT SUM(quantity) as filled,invoiceno
FROM `order`
WHERE fillstatus='Filled'
GROUP BY invoiceno
) AS f ON s.invoiceno=f.invoiceno
) AS fd ON c.id=fd.customerid
LEFT JOIN (
SELECT SUM(quantity) as lended, customerid
FROM `lending`
) AS puk ON c.id=puk.customerid
WHERE (puk.customerid IS NULL OR c.name LIKE '%%')
什么是更好的方法?感谢您的帮助。
【问题讨论】:
-
看看
c.id=fd.customerid。你说其他表中没有customerid。看起来 fd.customerid 来自sale表。 -
是的,你是对的。但是该表中没有数据。但是 customerid 字段在那里。
-
你在尝试
INSERT INTO ... SELECT吗? -
有 5 个
customerid哪一个给你错误?分而治之。单独测试每个子查询并逐步构建您的查询。 -
正如@Philipp 所说,该查询中没有任何内容会产生该错误。您可能还缺少其他东西。
标签: mysql sql subquery left-join