所以我有3个表,我需要得到按day_of_week列分组的price列的和,并且只返回具有最低和的day_of_week的和。
换言之,所有场馆都有多项服务,通过这些服务,它们有可用的天数和价格。所以场馆的一天价格,就是它一天的服务价格之和。我需要一天的总数,那是最低的,例如一周的最低价格。
这是我目前的疑问:

SELECT * , SUM( ad.price ) AS venue_price
FROM venues AS v
JOIN services AS s ON v.id = s.serviceable_id
JOIN available_days AS ad ON s.id = ad.available_id
WHERE ad.available_type =  'Service'
AND s.type =  'basic'
AND ad.available =1
GROUP BY ad.day_of_week
HAVING venue_price < 500000
ORDER BY venue_price
LIMIT 1

这是小提琴:http://sqlfiddle.com/#!2/37ee20/1/0
当我只有一个场馆时,这是可行的,但问题是它应该得到所有场馆,它们的场馆价格低于500000。如何让它只选择价格最低的可用日条目,而不将其限制在一个场地?

最佳答案

如果您需要最低和的记录,让我们按price排序并将LIMIT设置为1

SELECT * , SUM( ad.price ) AS price
FROM venues AS v
JOIN services AS s ON v.id = s.serviceable_id
JOIN available_days AS ad ON s.id = ad.available_id
WHERE ad.available_type =  'Service'
AND s.type =  'basic'
AND ad.available = 1
ORDER BY price ASC
LIMIT 1

关于mysql - 有条件和的内连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25446078/

10-13 02:16