2013-04-24 12 views
5

Mam dane w mojej bazy danych tak:MySQL porównać te same wartości w kolumnie dwa

jamu_a | jamu_b | khasiat 

A  | B  | Z 
A  | B  | X 
A  | B  | C 

a następnie chcę wyjście tak:

jamu_a | jamu_b | khasiat | total 

A  | B  | Z, X, C | 3 

Nie jestem ekspertem w MySQL, jakiego rodzaju zapytanie tworzy taki wynik? Powiedz, czy MySQL nie może tego zrobić i potrzebuje jakiegoś języka programowania. góry dzięki

Odpowiedz

10
SELECT jamu_a, 
     jamu_b, 
     GROUP_CONCAT(khasiat) khasiat, 
     COUNT(*) total 
FROM TableName 
GROUP BY jamu_a, jamu_b 

WYJŚCIA

╔════════╦════════╦═════════╦═══════╗ 
║ JAMU_A ║ JAMU_B ║ KHASIAT ║ TOTAL ║ 
╠════════╬════════╬═════════╬═══════╣ 
║ A  ║ B  ║ Z,X,C ║  3 ║ 
╚════════╩════════╩═════════╩═══════╝ 

jeśli istnieją powtarzania wartości w kolumnie KHASIAT i chcesz go mieć wyjątkowy, można dodaj DISTINCT na GROUP_CONCAT()

SELECT jamu_a, 
     jamu_b, 
     GROUP_CONCAT(DISTINCT khasiat) khasiat, 
     COUNT(*) total 
FROM TableName 
GROUP BY jamu_a, jamu_b 
+1

Jesteś po prostu świetny JW! –

+1

To świetnie, dzięki mistrzu! – andrefadila

+0

nie jest mistrzem, ale nie ma za co. ': D' –

Powiązane problemy