Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wielokrotne złączenie jednej tabeli
Forum PHP.pl > Forum > Bazy danych
widmo_91
Robie export dość dużej struktury do pliku xls.
Mój problem w dużym uproszczeniu przedstawia się następująco:

Są sobie 3 tabele i relacja wiele do wielu:

Tabela użytkownicy:
id | nazwisko
---------------
1 | Nazw1
---------------
2 | Nazw2
---------------
3 | Nazw3

Tabela produkty:
id | nazwa
---------------
1 | Prod1
---------------
2 | Prod2
---------------
3 | Prod3

Oraz tabela pośrednia koszyk
uzytkownik_id | produkt_id | liczba_sztuk

Chcialbym uzyskać z tego strukturę:
uzytkownik_id | nazwisko | Prod1 | Prod2 | Prod3 | ...itd
----------------------------------------------------------------
1 | Nazw1 | 0 | 3 | 2 | ....
----------------------------------------------------------------
2 | Nazw2 | 0 | 0 | 1 | ....


Potrzebuję elastycznego rozwiązania nie zależnego od liczby produktów i ich nazw.
mmmmmmm
PIVOT
widmo_91
Jest to zadanie w ogóle wykonalne w stary dobrym strukturalnym sqlu?
mmmmmmm
Ale jaki SQL to juz nie napiszesz...
Prod1, prod2, .. to skończona lista, czy nie?
widmo_91
Standardowo chodzi o MySQL.
Tabela produkty to nieskończona lista i nie da się tego w prosty sposób załatwić aliasami i LEFT JOINami

Próbowałem tę tabele potraktować jako skończoną listę i wygenerować cześć kodu sql za pomocą pętli. Jednak wtedy już dla 30 produktów wyszły mi czasy rzędu kilku sekund tak, że dużo szybciej jest puścić zapytania w pętli bo w sumie i tak na jedno wyszło.

Z tego co czytałem to da się to zrobić np. w oracle, postgre, ms sql. W mysql nie mogłem się doszukać składni pivot.
mmmmmmm
Trzeba zrobic to mniej więcej tak jak tu: http://sqlfiddle.com/#!2/d020b/2
Ten case w środku jest kluczowy
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.