2017-03-11 3 views
0

ich diese Tabellen haben:Wie kann ich ein Feld von SQL mit Komma Trennung konsultieren zeigen und ohne Wiederholungsfelder

TABLE tema

+---------+-------------+ 
| tema_id | nombre  | 
+---------+-------------+ 
|  1 | Aprender | 
|  4 | Justicia | 
|  2 | Pensamiento | 
|  3 | Vida  | 
+---------+-------------+ 

TABLE frase

+----+----------+----------------------------------------+ 
| id | autor_id | texto         | 
+----+----------+----------------------------------------+ 
| 1 |  2 | Pienso, luego existo     | 
| 2 |  1 | Aprender sin pensar es trabajo perdido | 
+----+----------+----------------------------------------+ 

TABLE tema_frase (Beziehung mit Tabellenfrase und Tema)

+----------+---------+ 
| frase_id | tema_id | 
+----------+---------+ 
|  1 |  2 | 
|  2 |  1 | 
|  2 |  2 | 
+----------+---------+ 
So

, wenn ich dies durchzuführen konsultieren:

SELECT frase.texto, tema.nombre 
FROM tema_frase INNER JOIN 
    tema 
    ON tema_frase.tema_id = tema.tema_id INNER JOIN 
    frase 
    ON frase.id = tema_frase.frase_id 

ich dieses:

+----------------------------------------+-------------+ 
| texto         | nombre  | 
+----------------------------------------+-------------+ 
| Pienso, luego existo     | Pensamiento | 
| Aprender sin pensar es trabajo perdido | Aprender | 
| Aprender sin pensar es trabajo perdido | Pensamiento | 
+----------------------------------------+-------------+ 

Meine Frage ist, wie kann ich zeigen, eine auf diese Weise konsultieren?

+----------------------------------------+-----------------------+ 
| texto         | nombre    | 
+----------------------------------------+-----------------------+ 
| Pienso, luego existo     | Pensamiento   | 
| Aprender sin pensar es trabajo perdido | Pensamiento, Aprender | 
+----------------------------------------+-----------------------+ 

Antwort

0

Sie würden das Ergebnis gruppieren möchten und verwenden group_concat die Namen verketten:

SELECT frase.texto,group_concat(tema.nombre separator ", ") 
FROM tema_frase 
INNER JOIN tema 
ON tema_frase.tema_id=tema.tema_id 
INNER JOIN frase 
ON frase.id=tema_frase.frase_id 
GROUP BY frase.texto 

Sie auch alphabetisch bestellen können und vermeiden Duplikate group_concat mit:

SELECT frase.texto,group_concat(DISTINCT tema.nombre separator ", " ORDER BY tema.nombre ASC) 
FROM tema_frase 
INNER JOIN tema 
ON tema_frase.tema_id=tema.tema_id 
INNER JOIN frase 
ON frase.id=tema_frase.frase_id 
GROUP BY frase.texto 
+0

Genau das, was ich wollte , Vielen Dank! –

Verwandte Themen