我有三個表將涉及一個查詢。這是查詢正在嘗試執行的操作:試圖在一個查詢中提取兩組不同的數據集
玩家創建交易報價。貿易提供的表結構是這樣:
id int(11)
sender int(11)
receiver int(11)
offer text
request text
active tinyint(1)
slot_upgrade int(11)
當玩家外幣交易報價,他們城市從他們發送的交易存儲在sender
領域的ID,以及目標的ID 城市他們發送交易存儲在receiver
字段。
現在,當玩家登錄時,我想提取所有活躍的交易。
我有這樣的事情:
SELECT ct.id, ct.offer, ct.request, cities.name, cities.userid, cities.x, cities.y,users.username
FROM cities_trades AS ct
LEFT JOIN cities ON ct.sender = cities.id
LEFT JOIN users ON cities.id = users.id
WHERE ct.active = 1 AND (ct.sender IN (1,2) OR ct.receiver IN (1,2))
該查詢會發現所有活動(積極意義的是,active tinyint(1)
字段設置爲1)交易在cities_trades
表。
它也將提取出發送方通過使用在cities_trades
表關聯到在cities
表中的城市ID的sender
領域cities
表做LEFT JOIN
的userid
。
通過這樣做,我可以從中提取cities
表和users
表的任何信息,爲業界創造者,或在這種情況下,發件人。
但是,如果我也想拉取關於receiver
的所有相同信息,而不僅僅是sender
(我希望他們都有信息),我該怎麼做?
我能想到的唯一的另一個解決方案是通過在cities_trades
表中添加兩個新字段來存儲其相關玩家ID,例如簡化查詢,而不僅僅是他們的城市id。
sender_player_id
receiver_player_id
我希望這個問題是有道理的。謝謝。
真棒!我不認爲兩次加入同一張桌子是可能的。真的很感謝快速和質量的迴應。 – josh
@josh很高興幫助,祝你好運。只要您使用別名進行區分,您可以多次加入同一張表。 –