Witam.
Mam trzy tabele:
Ceny_Promocje:
p_id | p_typ | p_typ_kh | p_nazwa | p_DataOD | p_DataDO
1 | 2 | 1 | jeden towar | 2014-05-09 | 2014-05-09
3 | 1 | 1 | trzy towary | 2014-05-09 | 2014-05-09
Ceny_PromocjePoz (zawierająca pozycje promocji zapisanych w Ceny_Promocje):
p_poz_id | p_poz_id_promo | p_poz_typ | p_poz_sposob | p_poz_tw_id | p_poz_wartosc
24 | 3 | 0 | 0 | 14286 | 1
25 | 3 | 0 | 0 | 14287 | 2
26 | 3 | 0 | 0 | 14288 | 3
27 | 1 | 0 | 0 | 14052 | 1
oraz tabelę tw__towar zawierającą opisy towarów.
Próbuje napisać zapytanie które da taki wynik:
ID | NAZWA | OD | DO | NAZWA/ILOSC
1 | jeden towar | 2014-05-09 | 2014-05-09 | CIASTKA
3 | trzy towary | 2014-05-09 | 2014-05-09 | 3
Tzn jeśli w Ceny_PromocjePoz
jest jeden towar to pokazuje jego nazwę jeżeli więcej to pokazuje ile ich jest.
Wyklepałem coś takiego:
SELECT
p_id AS ID,
p_nazwa AS NAZWA,
p_DataOD AS OD,
p_dataDO AS DO,
CASE WHEN count(p_poz_tw_id)=1 THEN (tw_nazwa) ELSE CAST(count(p_poz_tw_id) AS varchar(3)) END AS 'NAZWA/ILOSC'
FROM Ceny_Promocje
LEFT JOIN CENY_PromocjePoz ON p_id=p_poz_id_promo
LEFT JOIN tw__towar ON p_poz_tw_id=tw_id
GROUP BY p_id, p_nazwa, p_DataOD, p_dataDO, tw_nazwa
jednak przez tw_nazwa
w GROUP BY
otrzymuje taki wynik :
ID | NAZWA | OD | DO | NAZWA/ILOSC
1 | jeden towar | 2014-05-09 | 2014-05-09 | CIASTKA
3 | trzy towary | 2014-05-09 | 2014-05-09 | BISZKOPTY 1
3 | trzy towary | 2014-05-09 | 2014-05-09 | BISZKOPTY LINDUSIE 2
3 | trzy towary | 2014-05-09 | 2014-05-09 | BISZKOPTY LINDUSIE 3
wyrzucając tw_nazwa z zapytania:
SELECT
p_id AS ID,
p_nazwa AS NAZWA,
p_DataOD AS OD,
p_dataDO AS DO,
CASE WHEN count(p_poz_tw_id)=1 THEN 'tw_nazwa' ELSE CAST(count(p_poz_tw_id) AS varchar(3)) END AS 'NAZWA/ILOSC'
FROM Ceny_Promocje
LEFT JOIN CENY_PromocjePoz ON p_id=p_poz_id_promo
LEFT JOIN tw__towar ON p_poz_tw_id=tw_id
GROUP BY p_id, p_nazwa, p_DataOD, p_dataDO
Otrzymuje "prawie pożądany" (bo zamiast nazwy mam stały tekst) efekt:
ID | NAZWA | OD | DO | NAZWA/ILOSC
1 | jeden towar | 2014-05-09 | 2014-05-09 | tw_nazwa
3 | trzy towary | 2014-05-09 | 2014-05-09 | 3
Czy da się uzyskać taki efekt jak potrzebuję?
Jeśli tak to jak zmodyfikować zapytanie ?
Dziękuję za pomoc.