假设我有 2 个表(实际上这个命令中有更多表,但只有那些会影响问题)。
表 A 具有唯一帐户,表 C 具有唯一材料。
现在假设 ID 为 11 的唯一帐户可以有很少的唯一材料(例如:10、18、19、24)。
材料可以是相同类型或不同类型(例如:10 - type2, 18 - type2, 19 type1, 24 type3)并且它们有编号(例如:10 - A24, 18 - A25, 19 - A24, 24 - B55) 和许多其他值(但例如 1 就足够了)。
每个材料在专用列中都有帐户 ID。
现在我需要根据输入字符串标准将一些值选择到 DataTable 中:
String1 = Afst; //some value from tableA
//...
String2 = Ctype; // SomeType of Material from table C
String3 = dn; // number of Material from table C
Afst (tableA) |...| dn (tableC 的 Ctype 数) | dn2(Type2的表C数)
其中 dn2 已指定类型。
这里的问题是,即使此帐户不存在 Type2,我也需要使用 Ctype 选择所有材料。
例如,当 Ctype 和 Type2 都存在于以下位置时,这将给出所有结果:
("SELECT a.id, a.Afst, c.dn, d.dn as 'dn2' FROM sometableA a INNER JOIN sometableC c ON a.id=c.idofa INNER JOIN sometableC d ON a.id=d.idofa WHERE a.Afst like '%" + String1 + "%' and c.MaterialType='" + String2 + "' and c.dn like '%" + String3 + "%' and d.MaterialType='2'");
注意:我不允许以任何方式更改数据库表,因此我不能将 Material 表按类型拆分为表。
这也应该在单个 TSQL 命令中。