Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mySql] podzapytania zamiast join?
alekto
post
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:

  1. SELECT c.id,
  2.  
  3. (SELECT o1.o_nr
  4. FROM orders o1
  5. WHERE o1.c_id = c.id
  6. ) AS o_nr1
  7.  
  8. FROM customers c


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)
Go to the top of the page
+Quote Post
jarek0203
post
Post #2





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.01.2013

Ostrzeżenie: (0%)
-----


Wydaje mi się że tak bedzie działać:
  1. SELECT id, o_nr FROM C, O WHERE id=c_id ORDER BY o_date
Go to the top of the page
+Quote Post
widmo_91
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:06