1
解釋我的問題最簡單的方法可能是顯示錶和我試圖得到的結果。我最近嘗試查詢是在底部(不工作)基於mysql中多列的組行
我有以下表(刪除了一堆的簡單列):
客戶表:
------------------------- | client_id | name | ------------------------- | client_1 | Bob | ------------------------- | client_2 | Jane | ------------------------- | client_3 | Amy | -------------------------
合同表:
--------------------------------------------- | contract_id | client_id | amount | date | --------------------------------------------- | contract_1 | client_1 | $5 | 01/02 | --------------------------------------------- | contract_2 | client_1 | $25 | 21/03 | --------------------------------------------- | contract_3 | client_2 | $40 | 25/05 | ---------------------------------------------
會話表:
------------------------------------------ | session_id | client_id | contract_id | ------------------------------------------ | session_1 | client_1 | contract_1 | ------------------------------------------ | session_2 | client_2 | contract_3 | ------------------------------------------ | session_3 | client_2 | contract_3 | ------------------------------------------ | session_4 | client_1 | contract_2 | ------------------------------------------ | session_5 | client_1 | contract_1 | ------------------------------------------
我需要CLIENT_ID和contract_id聯接表和組的所有行,像這樣:
client 1, Bob
|___ contract_1, $5, 01/02
|___ Session 1
|___ Session 5
|___ contract_2, $25, 21/03
|___ Session 4
client 2, Jane
|___ contract_3, $40, 25/05
|___ Session 2
|___ Session 3
client 3, Amy
我最新的嘗試是做在表上進行完全外連接,並將結果按client_id和contract_id進行分組。
SELECT * FROM
(SELECT
*
FROM
contracts
LEFT OUTER JOIN
clients
ON
clients.client_id = contracts.client_id
UNION
SELECT
*
FROM
contracts
LEFT OUTER JOIN
sessions
ON
sessions.client_id = contracts.client_id)
AS tmp_table GROUP BY client_id, contract_id
完全外部聯接變通方法失敗,因爲列的各種表中的數量是不同的(我需要的所有列,所以我的運氣那裏的),它看起來像「GROUP BY」將返回只有1行中的每個的(這也爲我需要的所有行不會爲我工作。
性能沒有問題,在所有在這種情況下。
SQL fiddle based on Ronald's answer
它看起來像我所需要的。我會將其調整到我的生產表中,並在我批准答案之前查看是否有我忽略的內容
SQL結果集採用固定列定義的表格形式。請將您想要的結果格式化爲表格,以便我們瞭解您正在嘗試執行的操作。 –
此外,它將非常有用[sqlfiddle](http://sqlfiddle.com/)設置。 – mTorres
@GordonLinoff我不確定最好的表格格式是什麼,這就是爲什麼我發佈我想要做的而不是表格。 – Sylverdrag