Выбор наиболее популярного места назначения в моей базе данных на mysql - PullRequest
0 голосов
/ 29 февраля 2020

Я создал 3 таблицы:

CREATE TABLE participe 
(
    IDadherent INTEGER, 
    IDsortie INTEGER, 
    CONSTRAINT pk2 PRIMARY KEY (IDadherent, IDsortie)
); 

CREATE TABLE sortie 
(
    IDsortie INTEGER PRIMARY KEY, 
    jour DATE, 
    Latitude_sortie FLOAT, 
    Longitude_sortie FLOAT
); 

CREATE TABLE adherent 
(
    IDadherent INTEGER PRIMARY KEY, 
    nom VARCHAR(30), 
    prenom VARCHAR(30)
);

TL; DR:

  • Таблица 1) Приверженец (это люди, которые потенциально могут отправиться в набор адресатов с adherentID в качестве первичного ключа)

  • Таблица 2) Сортировка ie (это таблица с потенциальными адресатами с идентификатором назначения в качестве первичного ключа)

  • Таблица 3) Participe (эта таблица связывает оба первичные ключи: AdherentID и destinationID

Если я выбираю содержимое таблицы "частиц", я получаю что-то вроде этого:

+----------+------------+
| IDsortie | IDadherent |
+----------+------------+
|        5 |          1 |
|        5 |          3 |
|        5 |          5 |
|        4 |          2 |
|        3 |          1 |
|        3 |          4 |
|        3 |          5 |
|        2 |          3 |
|        2 |          5 |
|        1 |          1 |
|        1 |          2 |
|        1 |          3 |
|        0 |          6 |
+----------+------------+

Я пытался заказать приведенная выше таблица и получите новую таблицу с наиболее популярными адресатами (IDsort ie), ожидая получить что-то вроде этого:

+----------+----------------+
| IDsortie | Numeroadherent |
+----------+----------------+
|        5 |          3     |
|        4 |          1     |
|        3 |          3     |
|        2 |          2     |
|        1 |          3     |
|        0 |          1     |
+----------+----------------+

Для достижения этой великолепной таблицы я использовал эти запросы ( и с треском провалился):

SELECT IDsortie, IDadherent 
FROM participe 
ORDER BY IDsortie DESC;

SELECT COUNT(IDsortie) 
FROM participe 
GROUP BY IDadherent 
ORDER BY COUNT(IDadherent) ASC;

SELECT COUNT(IDsortie) 
FROM 
    (SELECT COUNT(*) AS IDsortie 
     FROM participe 
     GROUP BY IDadherent) AS Results

Один из mysql модов очень любезно перенаправил меня на другие подобные вопросы, но я не отказываюсь Узнайте их ответы, может кто-нибудь пройти через это (извините за неудобства).

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

Попробуйте использовать следующий запрос,

SELECT IDSortie
     , COUNT(IDSortie) [Numeroadherent] 
  FROM Participe 
 GROUP 
    BY IDSortie 
 ORDER 
    BY IDSortie;
1 голос
/ 29 февраля 2020

Похоже, вы хотите один запрос:

SELECT IDsortie, COUNT(*) as Numeroadherent
FROM participe 
GROUP BY IDsortie DESC
ORDER BY IDsortie DESC;

Я не совсем уверен, что ваши запросы связаны с ответом на вопрос. Следовательно, неясно, в чем ваша путаница. Ответ на ваш вопрос - простой GROUP BY запрос.

...