我正在显示一个列出不同城市事件的页面:
Los Angeles
Soap Festival 13 Feb
Cookie Contest 8 MayNew York
Star Trek Convention 5 MayMiami
Swimsuit Contest
事件只能链接到单个城市(region_id 在事件表中)或标记为在“所有城市”中(“show_in_all_cities”标志)。在没有多对多连接表(即 event_city)的情况下,有没有办法让标有“show_in_all_cities”的事件显示在每个城市下方?
我当前的查询如下(不考虑“所有城市”标志):
SELECT
event.*,
region.name
FROM event
INNER JOIN region
ON region.region_id = event.region_id
WHERE event.`date` >= CURDATE()
ORDER BY region.sort_order, event.date ASC
然后我使用 PHP 循环输出并显示城市标题。
最佳答案
将标志添加到 order by 子句中:
SELECT event.*, region.name
FROM event
INNER JOIN region
ON region.region_id = event.region_id
WHERE event.`date` >= CURDATE()
ORDER BY event.show_in_all_cities, region.sort_order, event.date ASC
(假设针对所有城市事件将标志设置为更高的值,否则:
ORDER BY event.show_in_all_cities DESC, region.sort_order, event.date ASC
)
关于php - SQL:如何根据标志在所有区域下方显示事件(在没有多对多连接的情况下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14557641/