Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] LEFT JOIN
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Mam takie zapytanko do bazy:

  1. SELECT p.*, count(o.id) AS num_orders,
  2. sum(o.refEarn) AS sum_orders,
  3. GROUP_CONCAT( o.id) AS ids
  4. FROM `partners` p
  5. LEFT JOIN `order` o ON o.ref=p.id AND o.refEarn>0
  6.  
  7. GROUP BY p.id


Powyższe zapytanie działa jak trzeba.

Mam też inne zapytanko, które różni się tylko jednym warunkiem (brak "AND o.refEarn>0 " ):

  1. SELECT p.*, count(o.id) AS num_orders,
  2. sum(o.refEarn) AS sum_orders,
  3. GROUP_CONCAT( o.id) AS ids
  4. FROM `partners` p
  5. LEFT JOIN `order` o ON o.ref=p.id
  6.  
  7. GROUP BY p.id


To zapytanie również działa poprawnie. Wyniki są inne niż w pierwszym zapytaniu.

Następnie chciałbym te powyższe zapytania połączyć w jedno. Robię to w ten sposób :

  1. SELECT p.*,
  2. count(o.id) AS num_orders,
  3. count(o2.id) AS num_orders_all,
  4. sum(o.refEarn) AS sum_orders,
  5. GROUP_CONCAT( o.id) AS ids,
  6. GROUP_CONCAT( o2.id) AS ids2
  7. FROM `partners` p
  8. LEFT JOIN `order` o ON o.ref=p.id AND o.refEarn>0
  9. LEFT JOIN `order` o2 ON o2.ref=p.id
  10. GROUP BY p.id


Jak widać, "doklejam" left joinem 2-krotnie dane z jednej tabeli, zmieniając tylko "warunki".
Niestety wyniki jakie to zapytanie zwraca nie są zgodne z moimi oczekiwaniami.
W skrócie mówiąc to :
  1. count(o.id) AS num_orders,
  2. count(o2.id) AS num_orders_all,

Daje mi idenytyczne wyniki. Z ids i ids2 jest tak samo. Gdy odpalam tamte (dwa pierwsze) zapytania osobno, wyniki są różne, czyli takie chce mieć.
To :
  1. LEFT JOIN `order` o ON o.ref=p.id AND o.refEarn>0

działa tak samo jak:
  1. LEFT JOIN `order` o2 ON o2.ref=p.id

A nie powinno tak być, bo przecież są różne "warunki" w "o" i "o2".

W jaki sposób rozwiązać mój problem ?


@up

Heloł programiści. Starałem się dokładnie opisać problem. Czy coś jest niejasnego, że nie potraficie mi pomóc (IMG:style_emoticons/default/tongue.gif) ? Jeśli tak to proszę napisać, podam więcej szczegółów, czy tam wyłumaczę problem.
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: 22.08.2025 - 21:18