关系为1:X的MySQL左连接上的和
好的,首先,我要更改表、字段和值的名称,我只是保留数据库的结构,让您理解 现在,让我们支持我有一个表关系为1:X的MySQL左连接上的和,mysql,Mysql,好的,首先,我要更改表、字段和值的名称,我只是保留数据库的结构,让您理解 现在,让我们支持我有一个表people,其中包含字段,id,age,country和language。另一个表foods,其中包含表people中每个人吃的食物,字段:person\u id,food,units。 注意:food是char,不是另一个表的ID,我无法更改此结构 现在,让我们放一些数据: 人 食品 好吧,我需要的是拿到一个人吃的身份证,年龄,国家和苹果和葡萄(忽略比萨饼)。在本例中,如果我查找ID 1
people
,其中包含字段,id
,age
,country
和language
。另一个表foods
,其中包含表people
中每个人吃的食物,字段:person\u id
,food
,units
。
注意:food
是char
,不是另一个表的ID,我无法更改此结构
现在,让我们放一些数据:
人
食品
好吧,我需要的是拿到一个人吃的身份证
,年龄
,国家
和苹果
和葡萄
(忽略比萨饼
)。在本例中,如果我查找ID 1,我应该得到:
ID | AGE | COUNTRY | UNITS
1 | 25 | usa | 26
对于ID 2:
ID | AGE | COUNTRY | UNITS
2 | 46 | mex | 3
选择p.Id、p.年龄、p.国家/地区、总和(f.单位)
从作为p的人
在f.person\u id=p.id上以f的形式加入食物
f.food“比萨饼”在哪里
按p.id、p.age、p.country分组
选择p.Id、p.Age、p.country、总和(f.units)
从作为p的人
在f.person\u id=p.id上以f的形式加入食物
f.food“比萨饼”在哪里
按p.id、p.age、p.country分组
选择p.id、p.age、p.country、sum(f.units)作为单位
来自人民党
在f.person_id=p.id上加入食物f
f.food“比萨饼”在哪里
按p.id、f.food分组
选择p.id、p.age、p.country、sum(f.units)作为单位
来自人民党
在f.person_id=p.id上加入食物f
f.food“比萨饼”在哪里
按p.id、f.food分组
如果您需要其他食物组合,只需编辑子句中的
如果您需要其他食物组合,只需编辑
条款中的内容。
根据现有数据,1人和2人的单位不是应该分别为26和3吗?根据现有数据,1人和2人的单位不是应该分别为26和3吗?嗯,我有很多不同的食物,所以,我将尝试其中f.food='apple'或f.food='grape'
而不是其中f.food'Pizza'
,而且它需要是一个左连接
而不是一个内部
,但我在我的邮件正文中没有具体说明。不管怎样,我明白你的意思了,把戏就在这群人身上。不用担心,你可以很容易地将它改为left join,我会将where子句改为where子句,其中f.food IN('apple','grape')
,这样你就不必继续添加或语句,尽管这段代码可以回答问题,提供关于为什么和/或如何回答该问题的额外背景将显著提高其长期价值。请您的回答添加一些解释。好吧,我有很多不同的食物,因此,我将尝试其中f.food='apple'或f.food='grape'
,而不是其中f.food'Pizza'
,而且,它需要是左连接而不是内部,但我在邮件正文中没有具体说明。不管怎样,我明白你的意思了,把戏就在这群人身上。不用担心,你可以很容易地将它改为left join,我会将where子句改为where子句,其中f.food IN('apple','grape')
,这样你就不必继续添加或语句,尽管这段代码可以回答问题,提供关于为什么和/或如何回答该问题的额外背景将显著提高其长期价值。请在您的回答中添加一些解释。您确定f.food
?尽管此代码可能会回答问题,但提供有关为什么和/或如何回答问题的其他上下文将显著提高其长期价值。请在您的回答中添加一些解释。您需要人均食品总消费量还是人均食品总消费量?您确定f.food
?尽管此代码可能会回答问题,但提供有关为什么和/或如何回答问题的附加上下文将显著提高其长期价值。请在回答中添加一些解释。您需要人均食物总消费量还是人均食物总消费量?
ID | AGE | COUNTRY | UNITS
1 | 25 | usa | 26
ID | AGE | COUNTRY | UNITS
2 | 46 | mex | 3
SELECT p.Id, p.Age,p.country, sum(f.units)
FROM people AS p
INNER JOIN foods AS f ON f.person_id = p.id
WHERE f.food <> 'Pizza'
GROUP BY p.id,p.age,p.country
select p.id, p.age, p.country, sum(f.units) as units
from people p
join foods f on f.person_id = p.id
where f.food <> 'Pizza'
group by p.id, f.food
select p.id, p.age, p.country, sum(f.units) as units
from people p join foods f
on (p.id = foods.person_id and f.food in ('apple', 'grape'))
group by p.id, p.age, p.country
SELECT p.*, SUM(f.units)
FROM people p
LEFT JOIN foods f
ON f.person_id = p.id
AND f.food in('apple','grape')
GROUP BY p.id
select
t1.id, t1.age, t1.country, sum(t2.units)
from people as t1, foods as t2
where
t1.id = t2.person_id and t2.food != 'pizza'
group by t1.id
order by t1.id