[Firebird]Artykuł + kilka cen - dwie koncepcje.

0

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.

0

Ja bym sobie to stary zrobił tak. Tabele: ARTYKUL_TABLE, CENA_TABLE, GRUPA_TABLE. Nastepnie pola:
w tabeli ARTYKUL_TABLE: ARTYKUL_ID, ARTYKUL_NAZWA
w tabeli CENA_TABLE: CENA_ID, CENA_WARTOSC, CENA_GRUPA_ID (gdzie to ostatnie jest kluczem obcym z tabeli GRUPA_TABLE)
w tabeli GRUPA_TABLE: GRUPA_ID, GRUPA_NAZWA i tyle, masz ceny w jednej tabeli. Wybierasz tylko po kluczu grupy z której grupy cenowej chcesz pobierać wartości.

Pozdrawiam.

0

Witam.
Problem w tym, że chciałbym w jednym zapytaniu (może być rozbudowane,zagnieżdżone itp) otrzymać w jednym wyniku ceny danego artykułu dla wszystkich grup czyli nazwa...cena dla grupy1,cena dla grupy2,cena dla grupy3 tak aby wyświetlić te wszystkie ceny w DBGrid , a niespecjalnie wiem jak zrobić takiego SELECT'a i nie miałem ostatnio czasu na eksperymenty.
Dzięki za wszelkie sugestie .
Pozdr. R.J.

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