2013-11-28 113 views
0

我在一個SQL查詢中連接4個表中的數據時遇到了一些困難,我使用MySQL作爲數據庫部分,並且會對任何幫助給予幫助。SQL查詢多個表的信息

下面是任務......

我有一個與列的表和數據

Sale   Items  Owner  Salesman 
-------------- ----------- ----------- -------------- 
*Salesman_id Item_type *Owner_id *Salesman_id 
*Owner_id  Item_color Owner_name Salesman_name 
Buyer_id  *Owner_id 
Price 

我要查詢有關我已經標有重點的文本列這些表。所以我可以得到如

項目類型,項目顏色,業主名稱,推銷員姓名,推銷員號碼。

我已經經歷了無數次迭代,試圖通過JOIN和嵌套查詢來實現這一點,但沒有足夠的結果。

+0

這看起來很直截了當。也許這是表格佈局不符合你想要做的,所以你不能得到你期望的結果?看起來你是在出售所有者而不是物品,即銷售是推銷員和所有者之間的聯繫,所以你只能出售所有者擁有的每件物品,而不是特定物品。也許你應該在銷售和物品之間建立聯繫,而不是銷售和所有者? – Guffa

回答

1

如果有一個一對一的關係,你可以使用內部連接

SELECT i.Item_type , i.Item_color ,o.Owner_name,sm.Salesman_name,sm.Salesman_id 
FROM Salesman sm 
INNER JOIN Sale s ON (s.Salesman_id = sm.Salesman_id) 
INNER JOIN Owner o ON (s.Owner_id=o.Owner_id) 
INNER JOIN Items i ON (i.Owner_id=o.Owner_id) 

如果有一個 - 到 - 多嘗試用LEFT JOIN

0

解決辦法時,我們加盟,並希望它他們只是顯示他們的價值觀,你可以這樣做(我知道這並不直接回答OP的問題,但我發現有...)

SELECT sale.`salesman_id`,sale.`owner_id`, 
      items.`order_id`, 
      owner.`owner_id`, 
      salesman.`salesman_id` 
    FROM `Sale` sale, 
     `Items` items, 
     `Owner` owner, 
     `Salesman` salesman 

而且應該返回所有內容。

但是,您的問題表明我們正在加入。你可以把一些數據放入像SQLFiddle這樣的東西,所以我有一些視覺表示?並簡要總結一下你想要完成的事情 - 就像在你想要加入的地方一樣?

1

試試這個

SELECT Item_type, Item_color, Owner_name, Salesman_name, Sale.Salesman_id FROM Items 
    INNER JOIN Owner USING(Owner_id) 
    INNER JOIN Sale USING(Owner_id) 
    INNER JOIN Salesman ON Salesman.Salesman_id=Sale.Salesman_id 

爲什麼不Items表有一個主鍵?

+1

檢查與您的MySQL服務器版本相對應的手冊,以便在'USING(Owner_id)INNER JOIN –

+0

附近使用正確的語法'我剛剛編輯:在USING之前移除了'ON'並將Salesman_number更改爲Sale.Salesman_id –