【发布时间】:2023-04-01 21:48:01
【问题描述】:
表:购物
shop_id shop_building shop_person shop_time
1 1 Brian 40
2 2 Brian 31
3 1 Tom 20
4 3 Brian 30
表格:建筑物
building_id building_city
1 London
2 Newcastle
3 London
4 London
桌子:香蕉
banana_id banana_building banana_amount banana_person
1 2 1 Brian
2 3 1 Brian
2 1 1 Tom
我现在希望它显示每个人在伦敦购买的香蕉数量。
我使用了这个代码:
SELECT tt.*, tu.*, tz.*,
SUM(shop_time) AS shoptime,
Ifnull(banana_amount, 0) AS bananas
INNER JOIN buildings tu ON tt.shop_building=tu.building_id
FROM shopping tt
LEFT OUTER JOIN (SELECT banana_person, banana_building,
SUM(banana_amount) AS banana_amount
FROM bananas
GROUP BY banana_person) tz
ON tt.shop_person = tz.banana_person AND tt.shop_building = tz.banana_building
WHERE tu.building_city = 'London'
GROUP BY shop_person;
但它不起作用。好像我说得太晚了,它应该只看伦敦,因为它忽略了这一点。
【问题讨论】:
标签: join where-clause cross-join