gpt4 book ai didi

php - SQL查询语句表连接

转载 作者:行者123 更新时间:2023-11-29 03:05:57 25 4
gpt4 key购买 nike

我的 SQL 查询有问题,返回的结果集不是我所期望的。

我试图关联这三个表。

事件详情

 __________________
| ID | start_date |
| 1 | 2012-08-09 |
| 2 | 2013-02-13 |
| 3 | 2012-12-12 |
| 4 | 2013-01-21 |
| 5 | 2012-12-25 |
-------------------

其中ID是主键

events_category_relationship

__________________________    
| ID | event_id | cat_id |
| 1 | 1 | 1 |
| 2 | 2 | 4 |
| 3 | 3 | 2 |
| 4 | 4 | 2 |
| 5 | 5 | 3 |
--------------------------

其中ID是主键

events_category_detail

 __________________________________
| ID | name | description |
| 1 | Europe | Kings and castles! |
| 2 | USA | Freedoms |
| 3 | China | Made in China |
| 4 | UK | Big Brother |
------------------------------------

其中ID是主键

我需要做的是从每个类别中只抓取 1 个事件,并按最早出现的日期排序。所以我应该期望我的结果如下

结果集

________________________________________________________________
| e_id | start_date | c_id | category_name | category_desc |
| 1 | 2012-08-09 | 1 | Europe | Kings and castles! |
| 3 | 2012-12-12 | 2 | USA | Freedoms |
| 5 | 2012-12-25 | 3 | China | Made in China |
| 2 | 2013-02-13 | 4 | UK | Big Brother |
-----------------------------------------------------------------

我尝试过的 SQL 查询看起来像这样

SELECT e.id, e.start_date, c.category_name, c.category_desc
FROM events_detail e
JOIN events_category_relationship r ON r.event_id = e.id
JOIN events_category_detail c ON c.id = r.cat_id
ORDER BY date(e.start_date)

这只是连接 3 个表并按日期顺序返回结果。我所坚持的是使每个类别中只有一个像上面的期望结果集一样显示。我试过使用 DISTINCT c.category_name 和 GROUP BY c.category_name,但它们都不起作用。

如有任何帮助或建议,我们将不胜感激。

最佳答案

您需要使用子查询来获取每个 namedescriptionmin(start_date)。然后,您将使用此结果连接回您的 events_details 表,以获取与子查询中的数据关联的 id:

SELECT e.id, 
d.start_date,
d.name,
d.description
FROM events_detail e
INNER JOIN
(
select min(e.start_date) Start_date,
c.name,
c.description
from events_detail e
INNER JOIN events_category_relationship r
ON r.event_id = e.id
INNER JOIN events_category_detail c
ON c.id = r.cat_id
group by c.name, c.description
) d
on e.start_date = d.Start_date
ORDER BY date(e.start_date)

参见 SQL Fiddle with Demo

关于php - SQL查询语句表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15208405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com