sql - 使用左连接和分组将 SQL 转换为 LINQ
问题描述
我已经通过 SQL 完成了这个查询,并想翻译成 LINQ
SELECT
ENT_DESC,
CAT_DESC,
PART_NUM,
PART_DESC,
GROUP_CONCAT(PART_OPTIONS.CODE, CHAR(13)) AS CODE,
PART_OPTIONS.PROMPT AS PROMPT,
PART_OPTIONS.DESCRIPTION AS DESCRIPTION,
PART_OPTIONS.PRICE AS PRICE,
ATTRIBUTE_DATA.NOTE,
ATTRIBUTE_DATA.DESCRIPTION AS ATTR_DESC
FROM ITEM_DATA
LEFT JOIN PART_OPTIONS ON ITEM_DATA.ID = PART_OPTIONS.PART_ID
LEFT JOIN ATTRIBUTE_DATA ON ITEM_DATA.ID = ATTRIBUTE_DATA.PART_ID
GROUP BY PART_OPTIONS.PART_ID
我知道如何在没有 GROUP_CONCAT 的情况下做到这一点,
from c in ITEM_DATA
join a in ATTRIBUTE_DATA on c.ID equals a.PART_ID into at
from a in at.DefaultIfEmpty()
join p in PART_OPTIONS on c.ID equals p.PART_ID into pa
from p in pa.DefaultIfEmpty()
select new {
ENT_DESC = c.ENT_DESC,
CAT_DESC = c.CAT_DESC,
PART_NUM = c.PART_NUM,
PART_DESC = c.PART_DESC,
CODE = p.CODE,
PROMPT = p.PROMPT,
DESCRIPTION = p.DESCRIPTION,
PRICE = p.PRICE,
NOTE = a.NOTE,
ATTR_DESC = a.DESCRIPTION,
}
而且我也分别做了 GROUP_CONCAT
from c in ITEM_DATA
join a in ATTRIBUTE_DATA on c.ID equals a.PART_ID into at
from a in at.DefaultIfEmpty()
join p in PART_OPTIONS on c.ID equals p.PART_ID into pa
from p in pa.DefaultIfEmpty()
group p by p.PART_ID into ps
select new {
CODE = ps.Select(g=>g.CODE),
}
但在那之后“c”和“a”消失了,我不知道如何访问 ITEM_DATA 和 ATTRIBUTE_DATA 表。
解决方案
推荐阅读
- jsonschema - Json 模式为对象提供默认值,但不为其属性提供默认值
- typescript - 如何正确键入从键映射的枚举值
- java - 如何在java中以最有效和最优雅的方式使用并行处理
- momentjs - 通过时刻转换为 UTC 时,时间缩短一小时 - utcOffset 不起作用
- laravel - Eloquent Query:所有具有相同类别的新闻。数据透视表
- node.js - 通过 npm 安装程序使用 nodejs 安装 React.js 代码后未运行
- javascript - 计算 Kintone 中的单选按钮值
- swift - 在 SwiftUI 中动态隐藏视图
- laravel-5 - strpos() 期望参数 1 是字符串,给定数组 - 当我进行雄辩的查询时
- vhdl - 我对 vhdl 中的当前时间有一些疑问