2016-03-16 67 views
0

我有一個奇怪的問題。我有三個表: - 表-A的列(ID,PRODUCT_ID,CUSTOMER_ID,地點,電話) - 表-B的列(ID,PRODUCT_ID,PRODUCT_NAME) - table_c的列(ID,CUSTOMER_ID,CUSTOMER_NAME)PHP + MySQL的 - 左加入 - 三個表

什麼我想要顯示的是以下內容的表格: table_a.id,product_name,customer_name,location,phone

因此,我假設我應該使用左連接table_b,table_c和table_a。

我已經試過多種方法,如:

SELECT*FROM table_a INNER JOIN table_b, table_c 
ON table_a.product_id = table_b.product_id 
ON table_a.customer_id = table_c.customer_id 

我希望避免在最後一桌的product_id/CUSTOMER_ID的副本..

回答

1

你可以得到所有其他的字段,但是你想得到哪個id?所有3個表都有id字段。

假設你可以先取表的ID:

SELECT table_a.id, table_b.product_name as product_name, table_c.customer_name as customer_name, table_a.location as location, table_a.phone as phone 

FROM table_a INNER JOIN table_b 

ON table_a.product_id = table_b.product_id 

INNER JOIN table_c 

ON table_a.customer_id = table_c.customer_id 

希望這有助於。

和平!的xD

+0

這很奇怪。我用你的方案 - 這裏是查詢:codepad.org/Z7HY5LEn但是當我甚至通過phpMyAdmin的即時得到1064錯誤嘗試此查詢 - 它指出,在過去的三線有錯誤。這是爲什麼? –

+0

看起來像我犯了一個錯字。讓我編輯它。 :) –

2

你需要加入sequently表-A與表-B獲得PRODUCT_NAME,然後table_a與table_c來獲取customer_name。你可以試試這個:

SELECT table_a.id, product_name, customer_name, location, phone 
FROM table_a 
    INNER JOIN table_b ON table_a.product_id = table_b.product_id 
    INNER JOIN table_c ON table_a.customer_id = table_c.customer_id 
2

它可以幫助指定之前,在你的SELECT語句表屬性表名。希望這可以幫助!

select 
    table_a.id, 
    table_b.product_name, 
    table_c.customer_name, 
    table_a.location, 
    table_a.phone 
from table_a 
left join table_b 
    on table_a.product_id = table_b.product_id 
left join table_c 
    on table_a.customer_id = table_c.customer_id 
+0

你知道任何可以使用PDO顯示大量數據的特定PHP類或腳本嗎?每當我這樣做,即時獲得500錯誤。更奇怪的是 - 我的代碼:phpmyadmin中使用的http://codepad.org/7HGBxmkq - 創建一個包含重複字段的表。我的ID爲1的行被複制了大約150次? –

+0

我對我的大部分項目都使用Laravel,所以大多數情況下使用數據庫交互的口才 - 我相信它使用PDO。 https://laravel.com/docs/5.2/eloquent如果你得到一個500錯誤,這可能是因爲超時,嘗試限制你的查詢10行,看看它是否工作,如果它確實改變你的PHP設置爲允許查詢執行超過30秒。無論如何,你可能要考慮結果的分頁,而不是將大量的數據吐出到屏幕上。 – haakym

+0

如果你對另一個查詢有進一步的問題,最好再問一個問題 – haakym