![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
mam takie oto zapytanie MySQL: Kod SELECT `u`.*, ( SELECT count(*) FROM `payments` AS `p` WHERE `p`.`user_id` = `u`.`id` ) AS `payments_count`, ( SELECT coalesce(sum(`amount`), 0) FROM `payments` AS `p` WHERE `p`.`user_id` = `u`.`id` ) AS `payments_total`, ( SELECT count(*) FROM `orders` AS `o` WHERE `o`.`user_id` = `u`.`id` ) AS `orders_count`, ( SELECT coalesce(sum(`price`), 0) FROM `orders` AS `o` WHERE `o`.`user_id` = `u`.`id` ) AS `orders_total` FROM `users` AS `u` ORDER BY `u`.`register_date` DESC Wygląda na skomplikowane, ale to po prostu wybieranie wszystkich rekordów z tabeli `users` i statystyk z połączonych dwóch innych tabel - `payments` i `orders`. Jak można to uprościć/zoptymalizować, żeby nie wyszukiwać po dwa razy z każdej z dołączonych tabel? Mile widziana podpowiedź z JOIN-ami, bo używam ORM-a i może być problem z podzapytaniami, chociaż nie dam sobie nic uciąć. (IMG:style_emoticons/default/smile.gif) P.S. Co jest z tym kolorowaniem składni? Wrzucam jako code, bo kolorowanie MySQL jakieś hieroglify mi wyrzuca. Ten post edytował SmokAnalog 30.08.2014, 15:38:34 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 03:03 |