[SQL] Warunkowy wybór pól

Odpowiedz Nowy wątek
2005-08-02 16:04

Rejestracja: 17 lat temu

Ostatnio: 10 lat temu

0

Zabieram sie do pisania prostego sklepu internetowego. Przyjąłem, że opis stałych cech produktów (cena, gwarancja) umieszczam w tabeli 'produkty', a wszystkie niestandardowe właściwości wszystkich rodzajów produktów w tabeli 'produkty_cechy'. Jak optymalnie zapisać w pierwszej tabeli wykaz pól (cech), które dotyczą danego przedmiotu i potem wypisac wartości tych cech z drugiej tabeli ?


80% problemów które pojawiają sie na forum w postach rozwiązaliby samodzielnie ich autorzy, gdyby nie mieli internetu...

Pozostało 580 znaków

2005-08-02 21:48

Rejestracja: 17 lat temu

Ostatnio: 1 godzina temu

0

Nie bardzo to zrozumialem ale jeżeli masz tabele produkty to zakładam że kazdy produkt ma jakieś id więc tabela produkty:

ID|Nazwa|itd.

i teraz cechy, masz dwie mozliwości:

tabela cechy

ID_produktu|cecha

lub

ID_produktu|nazwa_cechy|cecha

A wyciąganie to już prosto

SELECT
*
FROM
produkty
INNER JOIN cechy ON cechy.ID_produktu = produkty.ID

Zwróc uwagę że to zapytanie wyciagnie tylko te produkty które mają dodatkowe cechy, jak byś chciał wszystkie to użyj LEFT JOIN

Pozostało 580 znaków

SławojW
2005-08-02 21:55
SławojW
0

Nie wiem cz dobrze rozumiem czego szukasz, ale widze to tak:

  1. tabela (cechy wspólne):
    id_towaru (PK)
    cecha_1
    cecha_2
    ...
    cecha_nn

  2. tabela (cechy nie wspólne - słownik)
    id_cechy (PK)
    nazwa_cechy

3 tabela : (stąd pobierasz ewentualne cechy dodatkowe)
id_towaru (FK)
id_cechy (FK)
wartość_alfa
wartośc_numeric

Pozostało 580 znaków

2005-08-02 22:25

Rejestracja: 17 lat temu

Ostatnio: 10 lat temu

0

Dzieki, właśnie o to mi chodziło (chociaż miałem troche inny pomysł na strukturę bazy, ale wasze są znacznie lepsze).

[browar]


80% problemów które pojawiają sie na forum w postach rozwiązaliby samodzielnie ich autorzy, gdyby nie mieli internetu...

Pozostało 580 znaków

Odpowiedz

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