Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jak zastąpić w tym przykładzie operator UNION
damianooo
post
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


Witam , mam taki przykład:

SELECT sum(ile) as suma, name FROM (

SELECT count(p.id) as ile,t.name
FROM Profile p
INNER JOIN Team t
ON p.favorite_team_1_id = t.id
GROUP BY t.name

UNION

SELECT count(p.id) as ile,t.name
FROM Profile p
INNER JOIN Team t
ON p.favorite_team_2_id = t.id
GROUP BY t.name

) a GROUP BY name ORDER BY suma

Potrzebuję zsumować wyniki dwóch zapytań i chciałbym to zrobić bez użycia UNIONa. Można to zrobić inaczej ?

proszę o podpowiedź, dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
damianooo
post
Post #2





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


To co kolega "mmmmmmm" zaproponował też nie działa. Znalazłem jednak z pomocą kolegi rozwiązanie. Można to zrobić tak:

Takie oto zapytanie z UNION:

  1. SELECT sum(ile) AS suma, name
  2. FROM (
  3. SELECT count(p.id) AS ile,t.name
  4. FROM Profile p
  5. INNER JOIN Team t
  6. ON p.favorite_team_1_id = t.id
  7. GROUP BY t.name
  8. UNION
  9. SELECT count(p.id) AS ile,t.name
  10. FROM Profile p
  11. INNER JOIN Team t
  12. ON p.favorite_team_2_id = t.id
  13. GROUP BY t.name
  14. ) a GROUP BY name ORDER BY suma


Można zapienić na takie BEZ UNION:

  1. SELECT t.name, ile1 + ile2
  2. FROM Team t
  3. LEFT JOIN (
  4. SELECT t1.name,t1.id,count(p1.id) AS ile1
  5. FROM Profile p1
  6. INNER JOIN Team t1 ON p1.favorite_team_1_id = t1.id
  7. GROUP BY t1.id,t1.name
  8. ) g1 ON g1.id = t.id
  9. LEFT JOIN (
  10. SELECT t2.name,t2.id,count(p2.id) AS ile2
  11. FROM Profile p2
  12. INNER JOIN Team t2 ON p2.favorite_team_2_id = t2.id
  13. GROUP BY t2.id, t2.name
  14. ) g2 ON g2.id = t.id
  15. WHERE (ile1 + ile2) IS NOT NULL;


Ten post edytował damianooo 11.05.2013, 12:26:03
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: 17.10.2025 - 13:58