Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Sumowanie wyniku kilku zapytań, użycie UNION
rufuspl
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 17.06.2017

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


Cześć.
Mam taki problem, że łącząc/sumując trzy zapytania używając UNION w wyniku otrzymuję wynik niepołączony - powtarzają się kody procedur.

Oto moje zapytanie:
  1. $zapytanie_icd9="SELECT `procedura1`, count(`procedura1`) as liczba FROM `opis`
  2. left join `pacjent` using (id_pac)
  3. where `opis`.`procedura1`!='' AND `pacjent`.`id_ksiegi`=3 AND `pacjent`.`w_status`=1 AND `pacjent`.`czy_usuniety`=0
  4. AND `pacjent`.`data_zab`>='$stat1_data_od' AND `pacjent`.`data_zab`<='$stat1_data_do'
  5. GROUP BY `procedura1`
  6. UNION
  7. SELECT `procedura2`, count(`procedura2`) as liczba FROM `opis`
  8. left join `pacjent` using (id_pac)
  9. where `opis`.`procedura2`!='' AND `pacjent`.`id_ksiegi`=3 AND `pacjent`.`w_status`=1 AND `pacjent`.`czy_usuniety`=0
  10. AND `pacjent`.`data_zab`>='$stat1_data_od' AND `pacjent`.`data_zab`<='$stat1_data_do'
  11. GROUP BY `procedura2`
  12. UNION
  13. SELECT `procedura3`, count(`procedura3`) as liczba FROM `opis`
  14. left join `pacjent` using (id_pac)
  15. where `opis`.`procedura3`!='' AND `pacjent`.`id_ksiegi`=3 AND `pacjent`.`w_status`=1 AND `pacjent`.`czy_usuniety`=0
  16. AND `pacjent`.`data_zab`>='$stat1_data_od' AND `pacjent`.`data_zab`<='$stat1_data_do'
  17. GROUP BY `procedura3`
  18. ";


Jak połączyć wyniki tych zapytań tak, aby wyświetlały się unikatowe kody procedur?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

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


Możesz uprościć trochę to zapytanie:

  1. SELECT COUNT(procedura), procedura FROM (
  2. SELECT id_pac,procedura1 AS procedura FROM opis
  3. UNION ALL
  4. SELECT id_pac,procedura2 AS procedura FROM opis
  5. UNION ALL
  6. SELECT id_pac,procedura3 AS procedura FROM opis
  7. ) AS procedury
  8. JOIN pacjent AS p ON p.id_pac=procedury.id_pac
  9. WHERE procedury.procedura<>'' AND p.id_ksiegi=3 AND p.w_status=1 AND p.czy_usuniety=0
  10. AND p.data_zab>='$stat1_data_od' AND p.data_zab<='$stat1_data_do'
  11. GROUP BY procedury.procedura

Pierwszy warunek w WHERE możesz też przenieść do każdego podzapytania w UNION.
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: 11.10.2025 - 06:28