在 mysql 上选择我的数据库最受欢迎的目的地

Posted

技术标签:

【中文标题】在 mysql 上选择我的数据库最受欢迎的目的地【英文标题】:Selecting the most popular destination of my database on mysql 【发布时间】:2020-02-29 17:02:34 【问题描述】:

我创建了 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) Adherent(这是人们可能会前往一组以adherentID 作为主键的目的地)

表 2) 排序(这是具有以destinationID作为主键的潜在目的地的表)

表 3) Participe(此表链接两个主键:AdherentID 和 destinationID

如果我选择表格“participe”的内容,我会得到如下信息:

+----------+------------+
| 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 |
+----------+------------+

我已尝试订购上述表格并获得一张包含最受欢迎目的地 (IDsortie) 的新表格,希望得到如下内容:

+----------+----------------+
| 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 模块非常友好地将我重定向到其他类似的问题,但我不明白他们的答案,有人可以帮我解释一下吗(抱歉给您带来不便)。

【问题讨论】:

【参考方案1】:

看起来你想要一个查询:

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

我不太确定您的问题与回答问题有什么关系。因此,尚不清楚您的困惑是什么。您的问题的答案是一个简单的GROUP BY 查询。

【讨论】:

我首先尝试从由 IDsortie 订购的 participe 中同时选择 IDsortie 和 IDadherent,但我意识到没有计数元素对我没有帮助,所以我尝试了各种变化但收效甚微【参考方案2】:

尝试使用以下查询,

SELECT IDSortie
     , COUNT(IDSortie) [Numeroadherent] 
  FROM Participe 
 GROUP 
    BY IDSortie 
 ORDER 
    BY IDSortie;

【讨论】:

以上是关于在 mysql 上选择我的数据库最受欢迎的目的地的主要内容,如果未能解决你的问题,请参考以下文章

最受欢迎的前端框架Bootstrap,Ajax异步刷新技术,Mysql数据库锁——

在我的朋友网络中找到最受欢迎的赞

无法在 Android 4.4.4 上获得分配

最受程序员欢迎的数据库,Oracle排第二,它排第一!

介绍NoSQL最受欢迎的产品

如何找到最受欢迎的主题 - Django 搜索