2015-12-17 211 views
2

我有兩個數據庫表。我們將第一個引用爲ItemInfo,將另一個引用爲ItemStatus。 Info是兩者中較大的一個,Status僅使用Info(Active = 1)下列出的活動產品創建。 Info和Status之間只有兩列共享,分別是ListID和QtyOnHand。MySQL連接查詢兩個表

狀態問題是,即使所有活動項目都已記錄,但並非所有活動項目都具有正確的Web ID,它位於標記爲「WebID」的ItemInfo列中。沒有正確ID的項目只有ID爲0.

我想要做的是在兩者之間執行連接,但我不確定要使用哪個連接。我最初認爲正確的加入是正確的。我需要ItemStatus中的每個列(因爲它包含由腳本計算並插入的統計信息),但只需要那些具有有效Web ID的記錄。我知道查詢會是這個樣子:

SELECT A.*, B.WebID FROM ItemStatus A 
(?) JOIN ItemInfo B 
ON A.ListID = B.ListID 
WHERE B.WebID > 0 

的想法是有的,但我不知道怎麼表達了。狀態表沒有WebID,因爲當我最初構建它時,我覺得把它作爲一個列是多餘的。我們需要QtyOnHand的原因是因爲它的計算方式與ItemInfo的不同。

我該如何解決這個問題?

+0

您只需從B中取得「WebID」,所以您只需要「JOIN」 - 表示內部聯接。 – worldofjr

+0

我認爲那樣做了。我只需要驗證Web ID已正確映射。 – user3521737

+0

那我最好寫一個正確的答案! – worldofjr

回答

0

你只的B服用WebID,所以你只需要JOIN - 這意味着內部聯接;

SELECT A.*, B.WebID FROM ItemStatus A 
JOIN ItemInfo B 
ON A.ListID = B.ListID 
WHERE B.WebID > 0 

它加入都來自同一個表,從其他行的行,然後應用WHERE條件。因此,因此返回所需的行,積極的WebID

希望這會有所幫助!

0

我想你需要右鍵加入

SELECT A.*, B.WebID FROM ItemStatus A 
LEFT JOIN ItemInfo B 
ON A.ListID = B.ListID 
WHERE B.WebID > 0 
+0

我想你讓他們混淆了。我需要ItemStatus中的所有內容,而不是ItemInfo。我檢查了是否需要做的事情會給我ItemInfo表中的任何結果(兩者中較大的一個,但我不需要它的一切),並且有一些活動項目沒有正確的WebID。 Status中的ListID將與Info中的ListID進行比較,並根據哪些WebID> 0(我們知道它們處於活動狀態,因爲Status僅包含活動項目),查詢將生成一個包含Status和只有來自Info的WebID。 – user3521737

+0

我已更新答案..我希望這可能會有用.. – scaisEdge