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
rufuspl
post
Post #2





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

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


  1. $zapytanie_icd9="SELECT * FROM (
  2. SELECT `procedura1` AS `procedura`, count(`procedura1`) AS liczba FROM `opis`
  3. left join `pacjent` using (id_pac)
  4. where `opis`.`procedura1`!='' AND `pacjent`.`id_ksiegi`=3 AND `pacjent`.`w_status`=1 AND `pacjent`.`czy_usuniety`=0
  5. AND `pacjent`.`data_zab`>='$stat1_data_od' AND `pacjent`.`data_zab`<='$stat1_data_do'
  6. UNION
  7. SELECT `procedura2` AS `procedura`, 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. UNION
  12. SELECT `procedura3` AS `procedura`, count(`procedura3`) AS liczba FROM `opis`
  13. left join `pacjent` using (id_pac)
  14. where `opis`.`procedura3`!='' AND `pacjent`.`id_ksiegi`=3 AND `pacjent`.`w_status`=1 AND `pacjent`.`czy_usuniety`=0
  15. AND `pacjent`.`data_zab`>='$stat1_data_od' AND `pacjent`.`data_zab`<='$stat1_data_do') GROUP BY `procedura`
  16. ";


Powyższe zapytanie daje pusty wynik

  1. $zapytanie_icd9="SELECT * FROM (
  2. (SELECT `procedura1` AS `procedura`, count(`procedura1`) AS liczba FROM `opis`
  3. left join `pacjent` using (id_pac)
  4. where `opis`.`procedura1`!='' AND `pacjent`.`id_ksiegi`=3 AND `pacjent`.`w_status`=1 AND `pacjent`.`czy_usuniety`=0
  5. AND `pacjent`.`data_zab`>='$stat1_data_od' AND `pacjent`.`data_zab`<='$stat1_data_do')
  6. UNION
  7. (SELECT `procedura2` AS `procedura`, 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. UNION
  12. (SELECT `procedura3` AS `procedura`, count(`procedura3`) AS liczba FROM `opis`
  13. left join `pacjent` using (id_pac)
  14. where `opis`.`procedura3`!='' AND `pacjent`.`id_ksiegi`=3 AND `pacjent`.`w_status`=1 AND `pacjent`.`czy_usuniety`=0
  15. AND `pacjent`.`data_zab`>='$stat1_data_od' AND `pacjent`.`data_zab`<='$stat1_data_do')) GROUP BY `procedura`
  16. ";


Dodanie nawiasów (jak powyżej) nic nie zmienia - pusty wynik.
Coś źle robię?
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 - 22:32