2016-12-02 5 views
0

Ich habe eine Datenbank mit zwei verschiedenen Tabellen, die erste 'House' genannt und enthält die folgenden Spalten: id, name, updated_at. Meine zweite Tabelle heißt 'House_meta' und enthält die folgenden Spalten: house_id, name, value. In der Meta-Tabelle habe ich (zum Beispiel) die folgenden Daten: nurSQL: Join mehrere Zeile Wert als Spalten

house_ id  name  value 
1    street  123 streetname 
1    color  black 
1    city  chicago 
1    image  image-1.jpg 
1    image  image-2.jpg 
1    image  image-3.jpg 

Ich brauche diese Tabellen zu verbinden, so dass jedes Haus Eintrag in einer Zeile ist. Mein Problem ist, die Bilder, sie alle in derselben Zeile sein müssen und möglicherweise wie image1 ausgegeben werden, image2 usw. Mein aktueller SQL:

SELECT 
    house.id AS house_id, 
    house.name AS housename, 
    updated_at 
    max(case when house_meta.name = 'street' then house.value end) as street, 
    max(case when house_meta.name = 'color' then house.value end) as color, 
    max(case when house_meta.name = 'city' then house.value end) as city, 
    max(case when house_meta.name = 'image' then house.value end) as image 
FROM house 
    join house_meta on house.id = house_meta.house_id 
group by 
    house.id 

Dies ist nur möglich (natürlich) führt nur zu einem der Bilder zu sein hinzugefügt. Wie kann ich das tun, damit alle Bilder auf der einen Zeile landen?

Wie ich will es zurück:

house_id updated_at street   color city  image1  image2  image3 
1   2016-12-02 123 streetname black chicago image-1.jpg image-2.jpg image-3.jpg 
+0

wollen Sie in 'pivoting' Konzept aussehen – Rahul

Antwort