Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
zhaoyuehui123 opened this issue Jul 24, 2024 · 1 comment
Open

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

zhaoyuehui123 opened this issue Jul 24, 2024 · 1 comment

Comments

@zhaoyuehui123
Copy link

Feature 特性

针对Join两个相同的表时生成的sql错误的问题,建议不要限制abc别名。

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 });
生成后的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`

简要描述原因

针对上述Join并且有两个相同表的时候,如果lambda中不使用abc变量时生成的语句会有问题。每个人的书写习惯不大一样,有人习惯使用xyz,有人习惯使用ijk等等,所以写代码时就特别特别容易出问题,而且生成的SQL还不一定报错(上边生成的语句就不会报错),写代码的时候也不太可能每写一条语句就生成sql去看一下对不对(这个心智负担太重了),所以建议在整个框架层面(不光join)转换为sql的时候,不要依赖和限制用户所使用的参数名称。

@zhaoyuehui123
Copy link
Author

非常感谢,期待新版本!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant