2013-12-15 28 views
0

SQLite如何匹配多个表中的一列,然后只返回其中一个表。SQLite如何匹配多个表中的一列,然后只返回其中一个表并添加缺失列

我可以做到这一点,如果我运行两个查询,其中一个查询将总是返回0行,其他人将永远返回1维卡相反。

我有了列
item, amount, price, sold, slot
有列
item, amount, price, bought, slot

我想匹配,仅仅基于哪个有我想要的插槽上的插槽一次两个表其它表的表。

两个表不能同时使用同一个槽 但是如果在两个表使用相同槽的软件中发生一些错误,那么它应该输出2行,可能应该发生一行应该已经销售NULL其他行应该已经买了NULL这样的东西。

即使它正常工作,输出行应该已经出售和购买,其中只有一个是NULL,所以我可以检测它是哪种类型的表。

这是我迄今没有返回

SELECT * FROM Buying B INNER JOIN Selling S USING(slot) WHERE B.slot = 0 OR S.slot = 0 

这里是我想要的东西后,SELECT

SELECT item, amount, price, bought, sold FROM Buying B INNER JOIN Selling S USING(slot) WHERE B.slot = 0 OR S.slot = 0 

我知道,通过使用命令我做(B.slot = S.slot)这显然不会发生,除非它错了,但我不能让他们加入任何其他的插槽匹配在他们中的任何一个,这是我所能做的。

两个表格上的项目,数量,价格都不一样..如果两个表格匹配,我想使用表格中具有插槽匹配的信息,那么应该输出两个答案。

+0

为什么你标记这个mysql,如果它只是关于sqlite的? – Barmar

+0

我将它标记为既得到来自两者的答案,因为问题是一般的sql知识,对两者都有效。这就像在我的书 – SSpoke

+0

中使用XML和XML一样。sql标签用于一般SQL知识。 – Barmar

回答

1

使用UNION:

SELECT item, amount, price, bought, NULL sold, slot 
FROM Buying 
WHERE slot = 0 
UNION 
SELECT item, amount, price, NULL bought, sold, slot 
FROM Selling 
WHERE slot = 0 

每个子查询提出NULL在来自其它表中的列。

+0

好吧,但我怎么连接两个或插槽= 0 – SSpoke

+0

糟糕,错过了。我更新了答案。 – Barmar

+0

谢谢你,完美的作品。 – SSpoke

相关问题