c# - 从另一个查询中存在的查询中过滤值
问题描述
一段时间以来,我一直在尝试提出解决方案。我有一个查询,显示与包关联的产品。必须进行 3 表连接才能获得这些值,这些值可以正常工作。
我试图创建一个查询来显示包装中没有的所有可用产品。我尝试在查询中过滤掉这些值,但没有任何运气,并尝试了多种不同的方法。
这是我当前的查询:
string showProdQuery =
@"SELECT DISTINCT ProdName FROM Products P " +
"INNER JOIN Products_Suppliers S ON P.ProductId = S.ProductId " +
"INNER JOIN Packages_Products_Suppliers O ON S.ProductSupplierId = O.ProductSupplierId " +
"INNER JOIN Packages G ON G.PackageId = O.PackageId " +
"WHERE O.PackageId NOT LIKE @PackageId AND G.PackageId NOT LIKE @PackageId";
我的下一个想法是遍历原始查询中的列表,并在 select 语句中使用这些值,如下所示:
List<Package> listPackages = PackageList(packageId);
string listItem = "";
for (var i = 0; i < listPackages.Count(); i++)
{
listItem = "NOT LIKE " + listPackages.ToString() + " AND ";
}
string showProdQuery =
@"SELECT DISTINCT ProdName FROM Products P " +
"INNER JOIN Products_Suppliers S ON P.ProductId = S.ProductId " +
"INNER JOIN Packages_Products_Suppliers O ON S.ProductSupplierId = O.ProductSupplierId " +
"INNER JOIN Packages G ON G.PackageId = O.PackageId " +
"WHERE P.ProdName " +
listItem +
"G.PackageId NOT LIKE @PackageId";
我不知道这是否是一种合适的方法,或者我是否遗漏了一些非常简单的东西。我很想得到任何关于如何使这项工作的建议。
这是我设法完成的更新查询。谢谢大家的建议。
string showProdQuery =
@"SELECT DISTINCT ProdName FROM Products P " +
"INNER JOIN Products_Suppliers S ON P.ProductId = S.ProductId " +
"INNER JOIN Packages_Products_Suppliers D ON S.ProductSupplierId = D.ProductSupplierId " +
"WHERE P.ProductId = S.ProductId AND S.ProductSupplierId = D.ProductSupplierId AND P.ProductId " +
"NOT IN (SELECT ProductId FROM Products_Suppliers S " +
"INNER JOIN Packages_Products_Suppliers D ON S.ProductSupplierId = D.ProductSupplierId " +
"AND D.PackageId = @PackageId)";
解决方案
推荐阅读
- javascript - forEach 替换 Javascript 中的批量代码的解决方案
- postgresql - 使用 ODBC 和外部 SQL 文件的 Powershell/Postgres
- django - Django 显示图像按钮不适用于 for 循环
- linux - GNU findutils 找不到文件
- python - 在 sqlite3 中选择日期 DD/MM/YYYY
- modulenotfounderror - ModuleNotFoundError:没有名为“importlib._abc”的模块
- node.js - TypeORM 多对多渴望
- mongodb - 如何在 mongodb 中过滤文档?
- java - 如何使用 Springboot 将 CSV 文件导入 MSSQL
- javascript - ejs 代码没有给出输出 [EJS]