【发布时间】:2013-06-25 16:25:09
【问题描述】:
我在执行查询事件数据库时遇到问题。 目的是关于运动,结构是:
id_event event_sport event_city
1 10 153
2 12 270
3 09 135
桌上运动是这样的:
sport_id sport_name
1 Basketball
表格中的城市是:
city_id city_name
1 NYC
所以事情变得复杂了,因为我的事件表是这样的:
id_event event_sport event_city
1 10,12 153,270
2 7,14 135,271
3 8,12 143,80
我有一个多输入搜索表单,因此人们可以搜索他们所在城市的多项运动或多个城市的赛事。我正在使用Chosen
Chosen 的搜索结果是,例如:
City = 153,270 (if user selected more than one city)
Sport = 12 (if user only selected one sport, can be "9,15")
所以我需要在同一列中搜索城市和体育的多个值,用逗号分隔,知道有时我们只能搜索一个值,如果用户没有输入多个值。
我目前的查询是:
SELECT * FROM events e
LEFT JOIN cities c ON e.event_city=c.city_id
LEFT JOIN sports s ON e.event_sport=s.sport_id
WHERE FIND_IN_SET('1CITY', e.event_city) AND FIND_IN_SET('1SPORT', e.event_sport)
;
搜索一个城市哪个好,但如果用户搜索两个或更多,我没有办法显示它。
你能帮帮我吗?
提前致谢。
【问题讨论】:
-
规范化你的数据库架构
-
您可能想要查看更改数据模型,将逗号分隔的值存储在单元格中是不好的做法,因为它会降低灵活性。我会做的是与所有城市的活动相关联的第二张桌子,以及所有运动的另一张桌子。
-
我还建议看看这个stackoverflow.com/questions/5015403/… 的答案。
标签: mysql