嘿,我需要指望一些我必须加入的桌子。
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
附近的语法错误,
我哪里错了???
答案 0 :(得分:2)
您的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
(表名)等仅适用于此示例,因为以这种方式调用实体不是一个好主意...
答案 1 :(得分:1)
将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
答案 2 :(得分:0)
您可以将SELECT 3.Text
替换为SELECT COUNT(*)
以直接获取行数。