dotnetcore / FreeSql

🦄 .NET aot orm, C# orm, VB.NET orm, Mysql orm, Postgresql orm, SqlServer orm, Oracle orm, Sqlite orm, Firebird orm, 达梦 orm, 人大金仓 orm, 神通 orm, 翰高 orm, 南大通用 orm, 虚谷 orm, 国产 orm, Clickhouse orm, DuckDB orm, TDengine orm, QuestDB orm, MsAccess orm.
https://freesql.net
MIT License
4.12k stars 856 forks source link

Join两个相同的表时生成的sql错误 #1830

Open zhaoyuehui123 opened 4 months ago

zhaoyuehui123 commented 4 months ago

freeSql版本:3.2.820

.net版本:.net 8

问题描述及重现代码:

Join两个相同的表时生成的sql错误,生成后的select语句没有取出c表的字段,而且重复的取出了b表的字段。

var sql = Db.Select<TableUser, TableOrgan, TableOrgan>()
    .InnerJoin((x, y, z) => x.Organ1Id == y.Id)
    .InnerJoin((x, y, z) => x.Organ2Id == z.Id)
    .ToSql((x, y, z) => new { x, y, z });
Console.WriteLine(sql);
生成后的sql:
SELECT a.`Id` as1, a.`UserName` as2, a.`Organ1Id` as3, a.`Organ2Id` as4, b.`Id` as5, b.`OrganName` as6, b.`Id` as7, b.`OrganName` as8
FROM `TableUser` a
INNER JOIN `TableOrgan` b ON a.`Organ1Id` = b.`Id`
INNER JOIN `TableOrgan` c ON a.`Organ2Id` = c.`Id`
2881099 commented 4 months ago

用abc别名

zhaoyuehui123 commented 4 months ago

嗯嗯 用abc好使

zhaoyuehui123 commented 3 months ago

用abc别名

能不能不限制非得使用abc别名,因为每个人的习惯确实不大一样,有人习惯使用xyz,有人习惯使用ijk,所以写代码时就特别特别容易出问题,而且生成的SQL还不一定报错,所以还是希望在代码层面上不要约束变量名称之类的。