我試圖從四個表中顯示數據。其中三個表格構成了一對多的關係。我需要根據共享的suit_id將某些數據分組,並且我需要能夠自由地對來自不同表格的字段進行排序。我還需要能夠從不同的表中排序多個字段。MySQL多連接,多重排序維護組
- 該數據代表法庭記錄中的法律案件(訴訟)。
- 對於每件套裝都可能有很多派對。
- 對於任何給定方只有一次收費,並且該party_type將是「被告」。
DB結構:
以下是我當前的查詢,它返回正確的數據。數據按suit_id正確分組,但排序關閉,我的查詢不允許我控制排序。
SELECT
s.suit_id,
s.case_number,
p.party_id,
p.name,
c.charge_id,
c.charge_code
FROM suit_party sp
LEFT JOIN suit s
ON sp.suit_id = s.suit_id
LEFT JOIN (
SELECT pp.* FROM party pp
WHERE pp.party_type != 'Bond Entity'
ORDER BY pp.last_name DESC
) p
ON sp.party_id = p.party_id
LEFT JOIN charge c
ON p.party_id = c.party_id
WHERE p.party_id IS NOT NULL
GROUP BY sp.party_id, sp.suit_id
樣本輸出
+---------+-------------+----------+------------------+-----------+-------------+
| suit_id | case_number | party_id | name | charge_id | charge_code |
+---------+-------------+----------+------------------+-----------+-------------+
| 1 | 66519GE | 1 | Trouble, Tony T. | 1 | 262061253 |
| 1 | 66519GE | 2 | Law, Officer | NULL | NULL |
| 2 | 2013A262076 | 3 | Bad, Bobby B. | 2 | 0528 |
| 2 | 2013A262076 | 5 | Police, Peter | NULL | NULL |
| 3 | A357654KK | 6 | Krook, Kimberly | 3 | 2143 |
| 3 | A357654KK | 7 | Crime, Capn | NULL | NULL |
| 4 | B357654KK | 8 | Krook, Kimberly | 4 | 0660 |
| 4 | B357654KK | 9 | Law, Officer | NULL | NULL |
+---------+-------------+----------+------------------+-----------+-------------+
我希望能夠通過名稱和charge_code同時保持suit_id的正確分組進行排序。
http://www.sqlfiddle.com/#!2/e6daf9
爲什麼不添加GROUP BY sp.party_id,sp.suit_id,p.name,c.charge_code?然後它會在party_id和suit_id映射中按名稱和charge_code進行排序。 – kuriouscoder
剛纔試過,它並沒有影響排序。訂單保持不變。 – swilsonmcss
在子查詢中更改ORDER BY子句也不會影響訂單。 – swilsonmcss