2016-03-22 30 views
3

Bu yüzden bir select, multiple subquerys, çoklu birleştirme ve bazı koşullardan oluşan bir SQL sorgum var. Bana bu tabloyu verirSQL grup tablo değerleri

SELECT concat(t1.name, ' ', t1.surname) AS users, 
(SELECT t3.value AS col1 WHERE t6.id=343), 
(SELECT t3.value AS col2 WHERE t6.id=344), 
(SELECT t3.value AS col3 WHERE t6.id=345), 
(SELECT t3.value AS col4 WHERE t6.id=346), 
(SELECT t3.value AS col5 WHERE t6.id=347), 
(SELECT t3.value AS col6 WHERE t6.id=348), 
(SELECT t3.value AS col7 WHERE t6.id=349), 
(SELECT t3.value AS col8 WHERE t6.id=350), 
(SELECT t3.value AS col9 WHERE t6.id=351) 
FROM table1 t1 
JOIN table2 t2 
ON t2.id_table1_user=t1.id 
JOIN table3 t3 
ON t2.id=t3.id_eva 
JOIN table4 t4 
ON t3.id_pro_q=t4.id 
JOIN table5 t5 
ON t4.id_pro=t5.id 
JOIN table6 t6 
ON t4.id_t6=t6.id 
JOIN table7 t7 
ON t7.id_table1_user=t1.id 
WHERE t5.id=151 

: Bir şey gibi görünüyor Şimdi

table 1

... sorum şu - nasıl ben grubu sadece 2 satır olmayacak şekilde satır ve hayır NULL? Bir yolu var mı?

Not etmek için - Ben toplam SQL acemi oldum, bu yüzden komutu veya herhangi bir şeyi geliştirmek için herhangi bir öneri çok açıktır.

cevap

1

Sen fıkra ile bir grup gerekir: cevap için

SELECT concat(t1.name, ' ', t1.surname) AS users, 
     max (CASE WHEN t6.id = 343 then t3.value end) as col1, 
     max (CASE WHEN t6.id = 344 then t3.value end) as col2, 
     max (CASE WHEN t6.id = 345 then t3.value end) as col3, 
     max (CASE WHEN t6.id = 346 then t3.value end) as col4, 
     max (CASE WHEN t6.id = 347 then t3.value end) as col5, 
     max (CASE WHEN t6.id = 348 then t3.value end) as col6, 
     max (CASE WHEN t6.id = 349 then t3.value end) as col7, 
     max (CASE WHEN t6.id = 350 then t3.value end) as col8, 
     max (CASE WHEN t6.id = 351 then t3.value end) as col9 
    FROM table1 t1 
    JOIN table2 t2 
    ON t2.id_table1_user = t1.id 
    JOIN table3 t3 
    ON t2.id = t3.id_eva 
    JOIN table4 t4 
    ON t3.id_pro_q = t4.id 
    JOIN table5 t5 
    ON t4.id_pro = t5.id 
    JOIN table6 t6 
    ON t4.id_t6 = t6.id 
    JOIN table7 t7 
    ON t7.id_table1_user = t1.id 
WHERE t5.id = 151 
GROUP BY concat(t1.name, ' ', t1.surname) 
+0

sayesinde ... çalıştı, maalesef ve bana bir hata verir: HATA: alt sorgu dış sorgudan gruplanmamış sütun "t3._value" kullanır – Pabos

+0

@Pabos ve bu hangi hata olabilir? Her neyse, şimdi deneyin, sadece concat ile denedim cevabı – sagi

+0

düzenledi ... aynı hata (son mesaja bakın) – Pabos