Próbowałem znaleźć sposób na sortowanie według kilku różnych podzbiorów tabeli. Wyobraź sobie te dwie tabele:

City
id  name
1   ACity
2   BCity
3   CCity

Project
id  name    type    city
1   AP      0       ACity
2   BP      1       ACity
3   CP      1       BCity
4   DP      1       CCity
5   EP      1       ACity
6   FP      0       CCity

Chcę wyświetlić wszystkie miasta, które mają co najmniej 1 projekt typu 0, który zostanie wyświetlony jako pierwszy. Wszystkie projekty w tym mieście są wymienione, z projektami typu 0 u góry (a następnie posortowanymi alfabetycznie). Wszystkie miasta bez projektów typu 0 są następnie wyświetlane alfabetycznie. W tym przykładzie wyniki będą następujące:

Desired result:
ACity   AP
        BP
        EP
CCity   FP
        DP
BCity   CP

Próbowałem kilku rzeczy, ale nie mogę zmusić go do prawidłowego działania. Byłbym wdzięczny za wszelką pomoc.

0
Ntity 13 listopad 2018, 22:49

1 odpowiedź

Najlepsza odpowiedź

Demo SQL

SELECT *
FROM Projects P
LEFT JOIN (SELECT city, COUNT(city) as top_city
           FROM Projects
           WHERE type = 0
           GROUP BY city) R
  ON P.city = R.city
ORDER BY R.top_city DESC, 
         P.city, 
         P.type, 
         P.name

WYNIK: uwzględniam wszystkie kolumny do debugowania, ale możesz ograniczyć wynik do P.City i P.Name

enter image description here

1
Juan Carlos Oropeza 13 listopad 2018, 23:10