从“分层”中提取组合结果表中的数据
我不太擅长 SQL,今天是星期一,昨晚我们开了一个派对,我无法正常思考,我需要你们的帮助。
如果我的sql表中有数据。 现在使用 LINQtoEntities 我需要获取 id == 1 的车库的所有记录,其中应该合并记录 -如果
ModelName Color Garageld
BMW Black NULL
Mercedes Red NULL
Audi Yellow NULL
BMW Green 1
Mercedes Blue 1
为车库和汽车定义了颜色 - 获取它,如果没有,取 NULL 的任何颜色
因此,garageId == 1 的结果集应该是:
Audi Yellow
BMW Green
Mercedes Blue
I'm not so good in SQL, it's Monday, we had a party last night I can't think straight, I need your help guys.
If I have data in a sql table. something like that:
ModelName Color Garageld
BMW Black NULL
Mercedes Red NULL
Audi Yellow NULL
BMW Green 1
Mercedes Blue 1
And now using LINQtoEntities I need to get all the records for a garage with id == 1 where it should combine records - If there is a color defined for the garage and a car - get it, if there is none, take whatever color is for NULL
So the result set for the garageId == 1 should be:
Audi Yellow
BMW Green
Mercedes Blue
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将通过使用从默认(空)车库条目到车库 1 条目的外连接来完成此操作。使用 COALESCE(),这是一个标准 SQL 函数,返回其第一个非空参数。
当给定模型没有找到车库 1 条目时,外连接会使
g.*
的所有列都为空,因此 COALESCE() 将跳过 g.Color 并使用 dflt .用颜色代替。I'd do this by using an outer join from default (null) garage entries to the garage 1 entries. Use COALESCE(), which is a standard SQL function that returns its first non-null argument.
When this is no garage 1 entry found for a given model, the outer join makes all columns null for
g.*
so COALESCE() will skip g.Color and use dflt.Color instead.