[MYSQL] jak stworzyć zapytanie

0

Witam,
jak skonstruować zapytanie, które dla poniższej tabeli z wartościami da poszukiwane zestawienie (zliczanie grup kolorów dla poszczególnych zestawów). Kolejność kolorów, tzn. Kolor1 i Kolor2 nie ma znaczenia, są one nierozróżnialne.

TABELA
Numer_Zestawu, Kolor1, Kolor2

1, "rozowy", "granat"
1, "granat", "rozowy"
2, "rozowy", "rozowy"
2, "rozowy", ""
1, "granat", "rozowy"
1, "rozowy", "rozowy"
2, "rozowy", "granat"
1, "", "rozowy"
2, "rozowy", "granat"
2, "rozowy", ""

WYNIK:

Zestaw nr 1:
3 x rozowy + granat
1 x rozowy + rozowy
1 x rozowy

Zestaw nr 2:
2 x rozowy + granat
1 x rozowy + rozowy
2 x rozowy

Z góry dziękuję za jakiekolwiek wskazówki i pomoc :)

0
select numer_zestawu, kolor1,kolor2, count(1) from TABELA group by numer_zestawu, kolor1,kolor2 order by numer_zestawu

Dodając odpowiedni where pobierzesz dane dla odpowiedniego zestawu.

0
/*
create table ##tabela
( 
numer_zestawu int not null,
kolor1 varchar(10) not null,
kolor2 varchar(10) not null
)

INSERT ##tabela
SELECT 1, 'rozowy', 'granat'
UNION ALL SELECT 1, 'granat', 'rozowy'
UNION ALL SELECT 2, 'rozowy', 'rozowy'
UNION ALL SELECT 2, 'rozowy', ''
UNION ALL SELECT 1, 'granat', 'rozowy'
UNION ALL SELECT 1, 'rozowy', 'rozowy'
UNION ALL SELECT 2, 'rozowy', 'granat'
UNION ALL SELECT 1, '', 'rozowy'
UNION ALL SELECT 2, 'rozowy', 'granat'
UNION ALL SELECT 2, 'rozowy', ''
*/

SELECT 
        numer_zestawu, 
        case when kolor1<kolor2 then kolor1 else kolor2 end kolor1, 
        case when kolor1<kolor2 then kolor2 else kolor1 end kolor2, 
        count(*) 
from 
        ##tabela 
group by 
        numer_zestawu, 
        case when kolor1<kolor2 then kolor1 else kolor2 end, 
        case when kolor1<kolor2 then kolor2 else kolor1 end 

Testowane na MS SQL, ale na MySQL również powinno pójść.

pozdrawiaMM

0

Marcinie, właśnie dokładnie o to mi chodziło :)
Działa ślicznie - serdecznie dziękuję!

1 użytkowników online, w tym zalogowanych: 0, gości: 1