嗨,对不起,如果这是一个愚蠢的问题,但我试图从两个不同的表中获得结果,因为其中一个可能没有记录,我不知道如何继续。这是查询:
SELECT aid.*, T.ItemId, T.Total, T.Stack
FROM (SELECT ItemId, Stack, count(ItemId) as Total FROM auction_house WHERE Sale = 0 GROUP BY ItemId, Stack) as T, ahbot_item_data aid
WHERE T.ItemId = aid.ItemId
AND T.Stack = aid.Stack
基本上我想从援助表中获取一个项目列表,以及ah表中这些项目的当前计数。但由于计数可能只是零,因此可能不会返回该行。我希望行和总计为0。
提前谢谢^^ ;;
答案 0 :(得分:0)
您正在使用旧语法...我将切换到连接语法(更新且更受欢迎......效果相同,更易于阅读)。你想要的是一个'外连接',它将产生没有找到记录的空值。我将安排表格,我们将使用左外连接
SELECT aid.*, T.ItemId, T.Total, T.Stack
FROM ahbot_item_data aid left join (SELECT ItemId, Stack, count(ItemId) as Total FROM auction_house WHERE Sale = 0 GROUP BY ItemId, Stack) as T,
on T.ItemId = aid.ItemId
AND T.Stack = aid.Stack
我不再完全确定语法了...但是也可以使用!=在您使用的语法中执行此外连接(其中aid.itemID!= t.itemID我认为?)
答案 1 :(得分:0)
与@Twelfth所说的类似,你想要一个左外连接,即使右表中没有匹配的数据,也总是从左表中输出数据。
SELECT
aid.ItemId,
count(ah.ItemId) AS "Total",
aid.Stack
FROM
ahbot_item_data aid
LEFT OUTER JOIN auction_house ah
ON (aid.ItemID = ah.ItemID AND aid.Stack = ah.Stack)
GROUP BY
aid.ItemID, aid.Stack