php - SQL:如何根据标志在所有区域下方显示事件(在没有多对多连接的情况下)

标签 php mysql sql

我正在显示一个列出不同城市事件的页面:

Los Angeles
Soap Festival 13 Feb
Cookie Contest 8 May

New York
Star Trek Convention 5 May

Miami
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/

相关文章:

php - 搜索 - 空条件字段

php - 如何用PHP计算支付网关

php - 如何自动按日期发送电子邮件

php - 何时使用框架或从头开始开发 PHP Web 应用程序

php - Where 子句在 tinyint 上不起作用

php - SQL 查询问题(使用 3 个表)

Java:在子 jDialog 中更新数据后刷新我的 jTable

mysql - 想不通的sql错误

sql - 如何在 Ruby on Rails 中对相同价格的产品进行排序?

sql - 在 Select 查询中使用存储过程