2017-01-14 3 views
0

Ich habe zwei Tabellen in MySQL, und ich bin ziemlich schlecht bei Joins und Select-from-Select-Anweisungen. Einer meiner Tabellen sieht wie folgt aus:Erstellen einer SQL-Ansicht basierend auf IDs zwischen Tabellen

|id | label | 
|123 | "foo" | 
|456 | "bar" | 
|789 | "baz" | 

und der andere sieht wie folgt aus:

|id | tag | 
|123 | 456 | 
|123 | 789 | 
|456 | 789 | 

Ich möchte einen Blick - Leistung ist nicht besonders wichtig - die wie folgt aussieht:

| id | label | tags | 
| 123 | "foo" | "bar,baz" | 
| 456 | "bar" | "baz" | 

Wie kann ich das erreichen? Ich kenne interne Joins und den group_concat-Operator, aber ich weiß nicht genau, wie ich die IDs durch die Labels ersetzen soll.

Antwort

2

Dies ist ein wenig schwierig, weil Sie eine Aggregation sowie ein paar join s benötigen:

in der zurückgegebenen Satz
select t1.id, t1.label, group_concat(tt1.label) as tags 
from t1 join 
    t2 
    on t1.id = t2.id join 
    t1 tt1 
    on t2.tag = tt1.id 
group by t1.id, t1.label 
+1

Incase er will verschiedene oder bestellt Tags. Nachschlagen [group_concat] (http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat) – Edward

+0

Ich hätte das wahrscheinlich nicht alleine herausgefunden. Ich danke dir sehr! – stuart

Verwandte Themen