Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nietypowe spojrzenie na SQL
Forum PHP.pl > Forum > Bazy danych
smiady
Witam.

Powiedzmy mamy taką strukture - dwie tabelki:
nazwa tabeli - klient, kolumny: id, imie, nazwisko
nazwa tabeli - produkt, kolumny: id, id_osoby, nazwa

I tak jedna osoba może mieć max. 4 produkty i chce utworzyć zapytanie, gdzie wypluje mi tabele typu imie, nazwisko, produkt1, produkt2, produkt3, produkt4 - oczywiście jak ktoś nie wprowadzi wszyskich produktów niech w kolumnie będzie null. Myślałem nad tym i nie wiedziałem co zrobić. Wpadłem na pomysł, że dodaje kolumne order do produktu i przy dodawaniu produktu wstawiam numer produktu
SELECT CONCAT(K.`imie`, ' ', K.`nazwisko`) AS `nazwa_klient`, P1.`nazwa` AS `produkt1`, P2.nazwa AS `produkt2`, P3.nazwa AS `produkt3`, P4.nazwa AS `produkt4` FROM `klient` K LEFT JOIN `produkt` P1 ON(K.`id`= P1.`id_osoby` AND P1.`order`= 1) LEFT JOIN `produkt` P2 ON(K.`id`= P2.`id_osoby` AND P2.`order`= 2) LEFT JOIN `produkt` P3 ON(K.`id`= P3.`id_osoby` AND P3.`order`= 3) LEFT JOIN `produkt` P4 ON(K.`id`= P4.`id_osoby` AND P4.`order`= 4)
Wiem, że poprostu i najlepiej żeby w tabeli klient były od razu kolumny produkt1, produkt2 itd., ale powiedzmy, że jest taki układ. Co zrobić, aby utworzyć pytanie, gdzie nie musze tworzyć kolumy order ? Da się ?
mmmmmmm
Poszukaj PIVOT table. Wprawdzie MySQL ich nie ma wbudowanych, ale można to obejść.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.