在 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 上选择我的数据库最受欢迎的目的地的主要内容,如果未能解决你的问题,请参考以下文章