首页 > 解决方案 > 如何使用连接参数使用 SQL 子查询(后端操作在一个类中)?

问题描述

我正在创建一个练习项目,通过将它们放入容器板条箱中来帮助我组织事物。

每个箱子都将包含物品。当我进入箱子的 PK 时,我希望程序显示箱子里有哪些物品。

我有 3 张桌子:

crateContTbl

    [crateContTbl]  INT IDENTITY (1, 1) NOT NULL,
    [crateBC_FK]    VARCHAR (50) NULL,
    [invBC_FK]      VARCHAR (50) NULL,
    [crateQty]      INT          NULL,
    [crateLocation] VARCHAR (50) NULL,

板条箱

    [crateBC] VARCHAR (50) NOT NULL,

invTbl

    [invBC]    VARCHAR (50) NOT NULL,
    [itemName] VARCHAR (50) NULL,
    [itemDesc] VARCHAR (50) NULL,
    [itemPic]  IMAGE        NULL,

我在一个类中进行了后端操作,在该类中我从 form1 获取一个参数并让它进行通配符搜索。

Backend类方法返回数据表,但是带有子查询的方法不返回任何内容。如果我给它一个特定的值,它就会起作用。

通配符搜索用作查询,用于向我显示所有条目的搜索项,但我认为将其编写为子查询需要别的东西吗?

cmd.CommandText = "SELECT invTbl.invBC, invTbl.ItemName FROM invTbl WHERE invTbl.invBC = (SELECT crateContTbl.invBC_FK FROM crateContTbl WHERE crateContTbl.crateBC_FK = " + txtSearch + ")";

标签: c#sql-serverdatabasesubquery

解决方案


您可以尝试在子查询中使用like 运算符,如下所示

cmd.CommandText = "SELECT invTbl.invBC, invTbl.ItemName FROM invTbl WHERE invTbl.invBC = (SELECT crateContTbl.invBC_FK FROM crateContTbl WHERE crateContTbl.crateBC_FK like '%'" + txtSearch + "'%')";

推荐阅读