2014-05-07 137 views
1
SELECT t.id, apa.district AS district 
FROM tbl_activity AS t 
JOIN tbl_activity_package AS ap ON ap.activity_id = t.id 
JOIN tbl_activity_package_address AS apa ON apa.activity_package_id = ap.id 
GROUP BY t.id 
ORDER BY apa.district 

查詢後,輸出爲:SQL - 避免重複的列的值

output

我想通過區返回只有一行。我怎麼能在查詢中做到這一點?

+1

指定'DISTINCT'(也不要在區域中選擇'id',因爲'<117, Evora>'__不與'<118, Evora>'相同] –

+4

你關心哪個'id'值與「Evora」一起返回? –

+0

@AlmaDo'DISTINCT'不會改變任何東西。 –

回答

1

要分組district而不是id

但是,這會給你留下一個困境:哪個id價值你想展示給埃沃拉區?你想要117 id還是118 id?你將如何確定它?你需要一個特定的規則,你想要哪一個。作爲一個例子,這會給你更大的:

SELECT MAX(t.id) id, apa.district AS district 
FROM tbl_activity AS t 
JOIN tbl_activity_package AS ap ON ap.activity_id = t.id 
JOIN tbl_activity_package_address AS apa ON apa.activity_package_id = ap.id 
GROUP BY apa.district 
ORDER BY apa.district 

更改MAX()爲MIN()會給你更低的ID。您也可以有更復雜的標準,但這些要求首先將其構建爲派生表(子查詢),您可以加入這些派生表(子查詢),以將標準映射到特定的ID號。

+0

當然是很好的信息,但我不覺得OP已經提供了足夠的細節(還沒有)說這是答案。 –

+0

謝謝,@JoelCoehoorn。但是如果我改變GROUP BY條款,就像你一樣,我得到另一行id 98. –

+0

@ felipe.zkn然後表格設計被破壞,或者連接條件不完整 –