Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Jak uprościć to zapytanie?
SmokAnalog
post
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
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: 4.10.2025 - 03:03