Pracuję w środowisku Phpmyadmin. Moim celem było pobranie danych z Internetu, które opisują sędziów, regiony, w których pracują, pliki dokonane, liczby decyzji, ich wynagrodzenia i podobne rzeczy, które przesyłasz w moich bazach danych. Stworzyłem 5 baz danych, z których każdy symbolizuje określony region (część kraju). Teraz moim celem jest, na przykład, aby znaleźć sędzia o największej liczbie decyzji. Korzystanie z tego polecenia:

SELECT ID_sudca
     , Rozhodnutia
  FROM sudy_sk.informacie
UNION 
SELECT id_sudcu
     , rozhodnutie
  FROM nabozny1.sudca
UNION  
SELECT SUDCA_ID
     , POCET_ROZHODNUTI
  FROM `ke-sud-neznik`.`sudca`
UNION  SELECT `ID_sudca`, `Rozhodnutia` 
  FROM `gerboc`.`sudcovia` 
UNION 
SELECT `ID_SUDCU`, `Rozhodnutia` 
   FROM `biz`.`sudcovia`;` 

Stworzę tabelę wyszukiwania, w której wszyscy sędziowie są ładowane pod sudge_id (jest to unikalny numer, który symbolizuje każdy sędzia) oraz liczbę decyzji, czyli, jak gdybym umieściłem wszystkich sędziów i ich liczby w tej tabeli wyszukiwania, które jest symbolizowany przez. Moim celem jest teraz dowiedzieć się wszystkie informacje ze wszystkich regionów (5 baz danych), a na przykład pomyślę o pierwszym pytaniu, a to jest sędzia o najwyższej / najniższej liczbie decyzji. Chcę użyć funkcji Max (), ale jest to konieczne (przynajmniej myślę), aby użyć go w stosie z wymienionym wyświetlaczem. Ale niestety nie mogę tego zrobić. Nie możesz mi pomóc? Lub jakiś pomysł?

Korzystając z pierwszego wyświetlacza, pokaże mi trochę wyjścia, ale to wyjście nie jest poprawne. Kolejność wartości nie jest tak poprawna, jak widać.

    select id_sudca, rozhodnutia from sudy_sk.informacie 
union select id_sudcu, rozhodnutie from nabozny1.sudca 
union select sudca_id, pocet_rozhodnuti from `ke-sud-neznik`.sudca
union select id_sudca, rozhodnutia from gerboc.sudcovia 
union select id_sudcu, rozhodnutia from biz.sudcovia
order by rozhodnutia;

enter image description here

Co ciekawe, próbowałem tego samego widoku, właśnie zmieniłem nazwy tabel, aby dowiedzieć się, kto ma najwyższą pensję sędziów na 2018 r. (Zamówienie przez DESC), a tutaj był słusznie pokazany, ale kiedy znalazłem już liczbę przesłuchań już nie i myślę o tym, dlaczego tak jest. Dowolny pomysł ?

select id_sudca, plat_2018 from sudy_sk.enrichment_platy union select id_sudcu, prijem_2018 from nabozny1.m_priznania union select id_priznania, prijmy_za_rok_2018 from putrovec.majetkove_priznania order by plat_2018;

enter image description here

Już wiem, gdzie był błąd, ten warunek do wyboru Unii nie został spełniony:

Kolumny muszą mieć również podobne typy danych

1
Jozef Vendel 20 listopad 2020, 23:31

1 odpowiedź

Najlepsza odpowiedź

Możesz po prostu order by i limit:

select id_sudca, rozhodnutia from sudy_sk.informacie 
union select id_sudcu, rozhodnutie from nabozny1.sudca 
union select sudca_id, pocet_rozhodnuti from `ke-sud-neznik`.sudca
union select id_sudca, rozhodnutia from gerboc.sudcovia 
union select id_sudcu, rozhodnutia from biz.sudcovia
order by rozhodnutia desc limit 1

Lub, jeśli to samo id_suca może pojawić się w różnych tabelach, użyj agregacji

select id_sudca, sum(rozhodnutia) 
from (
    select id_sudca, rozhodnutia from sudy_sk.informacie 
    union select id_sudcu, rozhodnutie from nabozny1.sudca 
    union  select sudca_id, pocet_rozhodnuti from ke-sud-neznik.sudca
    union  select id_sudca, rozhodnutia from gerboc.sudcovia 
    union  select id_sudcu, rozhodnutia from biz.sudcovia
) t
group by id_sudca
order by sum(rozhodnutia) desc limit 1
2
GMB 20 listopad 2020, 20:34