2010-12-30 19 views
28

Łączę się w taki sposób z tabelą farmTOanimal. Jest podobny stół farmTotoolduplikaty mysql GROUP_CONCAT

id | FarmID | animal 
1 | 1 | cat 
2 | 1 | dog 

Kiedy łączę moje tabel w widoku, pojawia się wynik, który wygląda tak

FarmID | animal | tool 
    1 | cat | shovel 
    1 | dog | shovel 
    1 | cat | bucket 
    1 | dog | bucket 

Teraz robię GROUP BY FarmID i GROUP_CONCAT (animal) i GROUP_CONCAT (narzędzie), otrzymuję

FarmID |  animals  |   tools 
    1 | cat,dog,cat,dog | shovel,shovel,bucket,bucket 

Ale, czego naprawdę chcę, to wynik, który wygląda tak. Jak mogę to zrobić?

FarmID | animals | tools 
    1 | cat,dog | shovel,bucket 
+0

'GROUP_CONCAT (UNIQUE (' animal')) 'nie działa? –

Odpowiedz

92

Musisz użyć opcji DISTINCT:

GROUP_CONCAT(DISTINCT animal) 
+5

DISTINCT wyświetla zawartość tego samego wiersza jako jeden. Na przykład row1 = 'abc', row2 = 'def', row3 = 'abc'. GROUP_CONCAT (DISTINCT row) spowoduje abc, def, które powinno być abc, def, abc. Jakie jest rozwiązanie inne niż DISTINCT? –

+1

Gah, dziękuję. Próbowałem DISTINCT, ale nie umieściłem go w GROUP_CONCAT, nie jestem pewien, czego się spodziewałem. Dzięki. – Ryan

Powiązane problemy