2015-10-29 64 views
0

我在mysql中有兩個表,tender_itemsitem_price_add_manual結合兩個表,並顯示在php中的唯一數據

這兩個表格都有字段itemNametender_id。所以,我的要求是我將如何編寫一個查詢加入這些表格只是在某些itemNames如與顯示:

tender_id = 460所以導致PHP有像

tender_id | ItemName 
______________________ 
460   Item 1 
460   Item 2 
460   Item 3 

這可能只是一個查詢或我需要操作與PHP腳本?

我想這

有了上面的查詢IAM得到如下結果:

tender_id | ItemName | tender_id | ItemName 
__________________________________________________ 
460   Item 1  460   Item 3 
460   Item 2  460   Item 3 

,但我期待的結果如下:

tender_id | ItemName 
______________________ 
460   Item 1 
460   Item 2 
460   Item 3 
+0

Iam對不起,我也這麼做。相對較新的stackoverflow。 :) –

回答

1

好像所有你需要的是一個UNION操作:

(SELECT item_name, tender_id 
FROM tender_items 
WHERE tender_id=460) 

UNION 

(SELECT item_name, tender_id 
FROM item_price_add_manual 
WHERE tender_id=460) 

正如manual說:

工會的默認行爲是重複的行從 刪除結果。

因此,您對不同值選擇的要求也會得到滿足。

+0

現在是iam接近解決方案。當我嘗試上述查詢時,實際上tender_items有2條記錄。但是當我運行查詢它只顯示一條記錄?我犯了什麼錯誤? –

+0

@SanjuMenon查詢返回一個統一的結果集,它將來自*兩個表*的值組合起來。無法分辨哪個記錄來自哪個表。您可以爲此添加一個單獨的字段。 –

+0

@SanjuMenon此外,*沒有辦法*與'SELECT item_name,tender_id FROM tender_items WHERE tender_id = 460'相比,使用'UNION'的查詢返回少*行。 –

1
SELECT item_name,tender_id FROM 

((SELECT item_name, tender_id 
FROM tender_items 
WHERE tender_id=460) 

UNION 

(SELECT item_name, tender_id 
FROM item_price_add_manual 
WHERE tender_id=460)) AS T 
GROUP BY item_name,tender_id 
+0

你說得對。我錯過了它.'item_price_add_manual_units' - >'item_price_add_manual.units',我猜 –

+0

我已經編輯了你提到的查詢問題。請檢查它。 –

+0

@德魯。請參閱最新的編輯。我已經提到了確切的問題。 Iam對此感到抱歉。 –

0

我認爲你已經脫穎而出ign鍵將兩個表連接在一起。你不需要鏈接從一個表到另一個表的所有內容,因爲它使事情變得非常複雜並且可能發生錯誤,使得事情難以調試。你可以看看W3School school tutorial來知道如何SELECT具體。

$query = "SELECT * FROM tender_items, item_price_add_manual WHERE tender_items.tender_id = item_price_add_manual.tender_id AND tender_id = 460"; 
相關問題