![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 10.06.2013 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Mam tabelę C z listą klientów. W tabeli O są ich zamówienia. C id | imie 1 | Ewa 2 | Monika 3 | Rafał O c_id | o_nr | o_date 1 | 0915 | 20-01-14 1 | 0929 | 21-01-14 2 | 15150 | 20-01-14 2 | 17000 | 04-02-14 2 | 16098 | 28-01-14 2 | 17007 | 12-03-14 3 | 12120 | 20-03-14 Chcę uzyskać listę klientów z ich zamówieniami, ale ułożonymi w ten sposób: c.id | o.o_nr1 | o.o_nr2 | o.o_nr3 | o.o_nr3 dla tabel poniżej wynik wyglądałby tak: 1 | 0915 | 0929 | NULL | NULL 2 | 15150 | 16098 | 17000 | 17007 3 | 12120 | NULL | NULL | NULL Mam tylko początek zapytania:
Chcę, by zamówienia były uszeregowane; czyli zamówienie w kolumnie 2 jest starsze od zamówienia w kol3 itd. Dla uproszczenia możemy założyć, że w bazie nie ma klientów z większą liczbą zamówień niż 4. Czy da się to jakoś zrobić? Nikt nie wie? (IMG:style_emoticons/default/baaasmiley.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 37 Pomógł: 2 Dołączył: 1.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 109 Pomógł: 25 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
to co potrzebujesz to składnie PIVOT, mysql niestety nie ma wbudowanej składni PIVOT jednak da się to obejść jednak nie jest to najprostsze zagadnienie.
Aby w mysqlu wymodelować takie zapytanie należy skorzystać z: LEFT JOIN, CASE, GROUP BY. Ponadto jeżeli liczba zamówień jest nieskończona trzeba część zapytania wygenerować w pętli. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 00:06 |