【发布时间】:2018-10-13 07:26:17
【问题描述】:
这是我的用户案例:
有些机构可以有一个或多个位置。 他们可以为每个位置和排名购买订阅(排名是 1 到 5 之间的整数)。因此,一个代理机构可以有多个订阅(每个位置最多一个)
这是表格:
agency: id, name
location: id, name
agency_location: agency_id, location_id
subscription: id, agency_id, location_id, ranking
到目前为止一切顺利,非常简单。
然后我想显示给定位置的所有代理商(例如,location_id = 9),并按此位置的排名对它们进行排序(知道某些代理商不会订阅 - 即没有排名,应该来在确实有订阅的人之后)。
我尝试了各种 SQL 语句,但似乎无法弄清楚......
例如:
SELECT * FROM {agencies}
LEFT JOIN subscription ON subscription.agency_id=agency.id
ORDER BY (subscription.ranking IS NULL) ASC, subscription ranking ASC
将返回所有代理商,其中订阅排名靠前的代理商。
但是, 1) 如果代理有多个订阅,则返回重复值,并且 2)它没有考虑位置
任何线索将不胜感激,非常感谢!
【问题讨论】:
标签: mysql join sql-order-by