[英]INNER JOIN 3 tables and count them
嘿,我需要数几张我必须加入的桌子。
string strSQL = @"SELECT 3.Text
FROM 1 WHERE 1.ProductID=@ProductID AND 1.CustomerID=@CustomerID AND 3.Text=@text AND 1.Date BETWEEN '@DateFrom' and '@DateTo' INNER JOIN
2 ON 1.ID = 2.1ID INNER JOIN
3 ON 2.3ID = 3.ID";
SqlCommand objCMD = new SqlCommand(strSQL);
objCMD.Parameters.Add("@ProductID", SqlDbType.Int).Value = ProductID;
objCMD.Parameters.Add("@CategoryID", SqlDbType.Int).Value = CategoryID;
objCMD.Parameters.Add("@CustomerID", SqlDbType.Int).Value = CustomerID;
objCMD.Parameters.Add("@text", SqlDbType.VarChar).Value = text;
objCMD.Parameters.Add("@DateFrom", SqlDbType.DateTime).Value = DateFrom;
objCMD.Parameters.Add("@DateTo", SqlDbType.DateTime).Value = DateTo;
return objData.GetData(objCMD, _Con).Rows.Count;
我不断收到错误消息,说INNER
附近有不正确的语法 ,
我要去哪里错了???
您的stringSql
绝对错误。 您不能以这种方式混合使用WHERE/ON
运算符。
您必须更正它并进行如下操作:
SELECT
COUNT(*)
FROM 1 INNER JOIN 2
ON 1.ID = 2.ID
INNER JOIN 3
ON 2.ID = 3.ID
WHERE
1.ProductID=@ProductID
AND
1.CustomerID=@CustomerID
AND
3.Text=@text
AND
1.Date BETWEEN '@DateFrom' and '@DateTo'
编辑:我希望1
和2
(表名)等等仅用于此示例,因为以这种方式调用实体不是一个好主意...
将JOIN
子句放在连接条件之前,如下所示:
SELECT t3.Text, COUNT(ID)
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.ID = t2.ID
INNER JOIN Table3 t3 ON t2.ID = t3.ID
WHERE t1.ProductID = @ProductID
AND t1.CustomerID = @CustomerID
AND t3.Text=@text
AND t1.Date BETWEEN '@DateFrom' and '@DateTo'
GROUP BY t3.TEXT
您可以将SELECT 3.Text
替换为SELECT COUNT(*)
以直接获取行数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.