Объединение таблиц MySQL и сортировка данных по количеству и алфавитному порядку

#mysql #join #count #alphabetical

#mysql #Присоединиться #количество #алфавитный

Вопрос:

Допустим, у меня были эти две таблицы, и я хотел написать запрос, который отображал бы имя типа кошки и количество кошек в каждом типе кошки для всех типов кошек, которые есть в моей таблице типов кошек. Я хочу отобразить кошек в порядке убывания, но если у двух типов кошек одинаковое количество кошек, то я хочу отобразить их в алфавитном порядке.

Вот что у меня есть на данный момент, но у меня возникли проблемы с получением именно того, что я хочу.

Любые подсказки или вещи, о которых нужно подумать, были бы очень полезны. Спасибо.

 SELECT CatType_name AS 'Cat Type Name',
COUNT(*) AS 'Number of Cats' 
FROM CatType INNER JOIN Cats
ON Cats.CatType_id = Cats.CatType_id 
GROUP BY Cats.CatType_id, CatType_Name
ORDER BY CatType_name DESC;  

     Cats
---------------------
|Cat_id  | integer  | 
---------------------
|cat_name|  string  | 
---------------------
|cat_type | character|                   
---------------------
|CatType_id| integer|          
---------------------

     CatType
---------------------
|CatType_id|integer  | 
---------------------
|CatType_name|string | 
---------------------
 

Комментарии:

1. Не могли бы вы показать нам несколько примеров данных для двух таблиц?

2. Без образцов данных и ожидаемых результатов трудно сказать наверняка. Однако, order by count(*) desc, cattype_name возможно, это то, что вам нужно.

Ответ №1:

Это может сработать. хотя я не тестировал.

 SELECT CatType_name AS 'Cat Type Name', COUNT(*) AS 'Number of Cats'
     FROM CatType 
    INNER JOIN Cats 
    ON Cats.CatType_id = Cats.CatType_id
     GROUP BY Cats.CatType_id, CatType_Name 
ORDER BY count(*) DESC, CatType_name DESC;