Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Pobieranie rekordów wraz z najwyższą wartością z innej tabeli
The Night Shadow
post
Post #1





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


Zapytanie pobiera z bazy danych wszystkie rekordy spełniające określone warunki. Każdy rekord ma swój indywidualny numer ID.

Przykłąd:

Tabela: X
Kolumny: X.id, X.nazwa

Tabela: Y
Kolumny Y.id, Y.id_x, Y.ilosc, Y.data

W jaki sposób pobrać w jednym zapytaniu wszystkie rekordy z tabeli X, a zarazem dołączyć do każdego maksymalną ilosc z tabeli Y, oraz ogólną ilość rekordów przyporządkowanych z tabeli Y d tego rekordu?

Mogę to zrobić na piechotę w dwóch zapytaniach, ale zależy mi na sortowaniu...

Zastanawiam się, czy to w ogóle jest możliwe...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
The Night Shadow
post
Post #2





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


  1. (SELECT aukcje_aukcje.*,
  2.  
  3. (SELECT users_login FROM aukcje_users WHERE users_id = aukcje_maksymalna
  4. LIMIT 1) AS maksymalna
  5.  
  6. FROM aukcje_aukcje WHERE aukcje_id_user = '16' AND aukcje_rozpoczecie_data < '1177951380' AND aukcje_czas_data > '1177951380' AND aukcje_zakonczona = '0' AND EXISTS (SELECT *
  7. FROM aukcje_users WHERE users_id = aukcje_maksymalna)
  8.  
  9. ORDER BY maksymalna ASC, aukcje_czas_data)
  10.  
  11. UNION
  12. (SELECT aukcje_aukcje.*,
  13.  
  14. (SELECT users_login FROM aukcje_users WHERE users_id = aukcje_maksymalna
  15. LIMIT 1) AS maksymalna
  16.  
  17. FROM aukcje_aukcje WHERE aukcje_id_user = '16' AND aukcje_rozpoczecie_data < '1177951380' AND aukcje_czas_data > '1177951380' AND aukcje_zakonczona = '0' AND NOT EXISTS (SELECT *
  18. FROM aukcje_users WHERE users_id = aukcje_maksymalna)
  19. ORDER BY aukcje_czas_data)
  20.  
  21. LIMIT 0, 50


Nad powyższym zapytaniem siedzę już od kilku godzin. Dane pobierane są w sposób jak najbardziej poprawny. Problemem jest jedynie sortiwanie. W momencie kiedy nie ma drugiego zapytania i UNION dane sortują się poprawnie według pola "maksymalna".

W momencie kiedy pojawia się drugie zapytanie coś jest nie tak. Dane są pobierane, ale nie są sortowane. W całym zapytaniu dane z pierwszej jego części pownny się sortować według pola. Nie sortują się.

Co jest nie tak? Już dostaję mętliku w gowie. Pierwsza część zostawiona sama jest ok sortuje się pięknie. Kiedy dorzucić UNION i resztę coś się wali, jakby blokowane było sortowanie w obrębie pierwszego zapytania.

Co z tym zrobić?

Ten post edytował The Night Shadow 30.04.2007, 17:49:54
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 18:24