2012-10-03 125 views
1

我使用PHP/MySQL的建設這個權錢交易型功能在這個網站,我試圖創建一個具有以下字段響應查詢: 所有者的用戶名,標題,提供者的用戶名,要約的項目如何爲這個多對多表建立一個SQL查詢?

基本上我這裏有三個表具有以下字段:

用戶

user_id, username, email 

items_available

item_number, owner_id (foreign key that links to user_id), title 

offers_open

trade_id, offerers_id (fk of user_id), offerers_item(fk with item_number), receivers_id (fk from user_id) 

我該怎麼辦呢?我已經看到了對多對多SQL查詢的一些引用,但它們似乎並不特別符合我在尋找的內容(例如,offerers_id和owner_ids引用Users表中的不同users_id,但怎麼做我讓他們在SQL查詢中區分)

+1

你究竟想從這些表中獲取什麼? –

+0

我試圖在一行中獲取以下字段:所有者的用戶名,標題,提供者的用戶名,提供者的項目 – user1717344

+0

@codepuppy。是的,你是對的,但不幸的是我沒有設計表格。 – user1717344

回答

4

如果我理解正確的話,這是你在找什麼?

SELECT owner.username, oferrers.username, ia.title 
FROM offers_open o 
    INNER JOIN users AS offerers 
    ON o.offerers_id = offerers.user_id 
    INNER JOIN items_available AS ia 
    ON o.offerers_item= ia.item_number 
    INNER JOIN users AS owner 
    ON ia.owner_id = owner.user_id 

我沒有看到在users表標題,所以沒有包括一個。

+0

是的,我認爲這就是我要找的!它看起來像解決方案!如果沒有,我想我可以修改,以得到我想要的。謝謝! – user1717344

+1

@ user1717344:不要忘記標記爲正確答案! :) – Teekin

0

我不知道你想要什麼輸出,但由於你的users表將在查詢中出現兩次,他們需要有別名,像這樣:

SELECT offerer.username AS offerer_username, title, receiver.username AS receiver_username 
FROM users AS owner 
JOIN items_available ON owner_id = owner.user_id 
JOIN offers_open ON offerers_item = item_number 
JOIN users AS receiver ON receivers_id 

同樣,不知道這是你想要什麼,但希望你明白。

+0

謝謝,這給了我想要什麼,我想要的。 – user1717344

0

聽起來你需要用戶表的別名。

有點像?

select 
    u.*, ia.*, oo.*,u2.* 
from 
    users as u, 
    items_available as ia, 
    offers_open as oo, 
    users as u2 
where 
    u.user_id = ia_user_id and 
    oo.user_id = u2.user_id and 
    oo.item_id = ia.item_id 
+0

你說得對 - 我需要使用別名。我不確定這是否可用,因爲我對MySQL相當陌生。謝謝。 – user1717344