我有一個SQL查詢,幾乎是正確的,但如果用戶有從返回超過1架飛機,他們最終在結果多行列表數據庫:SQL查詢返回的結果太多
SELECT a.this_pay,
u.username,
u.user_id,
c.type_id,
c.is_primary,
x.typename,
p.pf_city,
p.pf_state,
n.username AS non_username,
n.user_id AS non_user_id,
n.pf_city AS non_pf_city,
n.pf_state AS non_pf_state
FROM (((((jowner_event_attendees a
LEFT JOIN jowner_users u ON a.user_id = u.user_id)
LEFT JOIN jowner_aircraft c ON a.user_id = c.user_id)
LEFT JOIN jowner_aircraft_types x ON x.id = c.type_id)
LEFT JOIN jowner_profile_fields_data p ON a.user_id = p.user_id)
LEFT JOIN jowner_not_users n ON a.user_id = n.user_id)
WHERE a.event_id = 28 ORDER BY COALESCE(u.username,non_username);
我最終得到一個有多個條目的列表,對於有多架飛機的任何人,我只需要返回1個條目,無論他們在'jowner_aircraft'表中有多少條飛機條目。
我也不希望改變這個查詢,因爲應用程序的其他部分依賴它,顯然它需要我所要求的修訂,但請嘗試在沒有完全重寫的情況下回答它。
看到這樣的子選擇從來就不是好事。這不能被寫成一個單一的'SELECT'調用連接? – tadman
我正在從其他人的平庸的代碼工作,問題是該應用程序是依賴於此,所以我猶豫是否要改變它太多...如果你能想出一個結構更好的查詢,併爲我工作,然後發佈起來:D – DrCord
如果有多個jowner_aircrafts,應該選擇哪個aircraft typename和type_id? – femtoRgon