2013-12-15 54 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

相關問題