Witam.
Mam tabele (Firebird): ARTYKUL i 3 tabele z cenami dla 3 grup klientów :CENA_KLIENTA_1,CENA_KLIENTA_2,CENA_KLIENTA_3.
Odczytuje dane następującym zapytaniem :
SELECT
A.ID_ARTYKULU,
A.NAZWA,
A.STAN,
A.CENA_ZAKUPU_NETTO,
CK1.CENA_NETTO_KL1,
CK2.CENA_NETTO_KL2,
CK3.CENA_NETTO_KL3
FROM
ARTYKUL A
LEFT JOIN CENA_KLIENTA_1 CK1 ON A.ID_ARTYKULU=CK1.ID_ARTYKULU_KL1
LEFT JOIN CENA_KLIENTA_2 CK2 ON A.ID_ARTYKULU=CK2.ID_ARTYKULU_KL2
LEFT JOIN CENA_KLIENTA_3 CK3 ON A.ID_ARTYKULU=CK3.ID_ARTYKULU_KL3
To rozwiązanie działa ale wymaga osobnej tabeli cen dla każdej grupy klientów, a widziałem baze z jedną tabelą cen dla dowolnej liczby grup cenowych -zawiera dodatkowe pole np. ID_GRUPY klientów.
Mogłoby to wyglądać jak poniżej ale nie wiem jak wybrać aby w miejscu C.CENA_NETTO wyświetlał mi odpowiednie ceny (IF , CASE ??):
SELECT
A.ID_ARTYKULU,
A.NAZWA,
A.STAN,
A.CENA_ZAKUPU_NETTO,
C.CENA_NETTO, // cena IF ID_GRUPY= 1 ??
C.CENA_NETTO, // cena IF ID_GRUPY= 2 ??
C.CENA_NETTO // cena IF ID_GRUPY= 3 ??
FROM
ARTYKUL A
LEFT JOIN CENA C ON A.ID_ARTYKULU=C.ID_ARTYKULU
Na razie używam wszędzie LEFT JOIN bo nie mam wypełnionych tabel z cenami(null).
W tabeli z cenami mam jeszcze pole ILOSC (domyślnie = 1) które umożliwia wpisanie innych cen zależnych od ilości dla tego samego artykułu, ale to już osobny temat.
Przy liczbie artykułów (rekordów) ok.10 tysięcy (później może do 20tys.) które rozwiązanie jest korzystniejsze ??
Pozdrawiam.
Robert J.