Asp.net sql语句条件

Asp.net sql语句条件,asp.net,sql,database,vb.net,sql-server-2008,Asp.net,Sql,Database,Vb.net,Sql Server 2008,我想从区域=南或区域=西的患者表中选择所有女性患者,然后根据疾病名称对结果进行分组 所以我必须这样写where条件: command10.CommandText = "SELECT D.DiseaseName, COUNT(D.Patient_ID) AS PNO FROM PatientAffectDisease D INNER JOIN patient P on D.Patient_ID = P.Patient_ID WHERE P.Gender='" & "female" &

我想从区域=南或区域=西的患者表中选择所有女性患者,然后根据疾病名称对结果进行分组 所以我必须这样写where条件:

command10.CommandText = "SELECT D.DiseaseName, COUNT(D.Patient_ID) AS PNO FROM PatientAffectDisease D INNER JOIN patient P on D.Patient_ID = P.Patient_ID WHERE P.Gender='" & "female" & "'" & " AND P.Area='" & "south" & " '" & "OR P.Area='" & "west" & " '" & " GROUP BY DiseaseName "
但这并没有返回正确的结果


有什么想法吗?

在OR'd条件周围加上括号

e、 g

其中p.Gender='”和“female”和“&”和 (P.Area=“&”南部“&”或P.Area=“&”西部“&”)

或者只使用IN子句。。。
其中p.gender='femal'和p.area位于('south'、'west')

在OR'd条件周围加上括号

e、 g

其中p.Gender='”和“female”和“&”和 (P.Area=“&”南部“&”或P.Area=“&”西部“&”)

或者只使用IN子句。。。
其中p.gender='female'和p.area位于('south'、'west')

问题是,在south和west后面有额外的空格,代码为:
“”

你试图找到“南”或“西”,而不是“南”或“西”

还可以修改此条件以使用IN子句

command10.CommandText = "SELECT D.DiseaseName, COUNT(1) AS PNO FROM PatientAffectDisease D INNER JOIN patient P on D.Patient_ID = P.Patient_ID WHERE P.Gender='female' AND P.Area IN ('south', 'west') GROUP BY DiseaseName"

问题是,您在south和west后面有额外的空格,代码是:
“”

你试图找到“南”或“西”,而不是“南”或“西”

还可以修改此条件以使用IN子句

command10.CommandText = "SELECT D.DiseaseName, COUNT(1) AS PNO FROM PatientAffectDisease D INNER JOIN patient P on D.Patient_ID = P.Patient_ID WHERE P.Gender='female' AND P.Area IN ('south', 'west') GROUP BY DiseaseName"

我认为问题出在where子句中,它与不使用括号有关

command10.CommandText = 
"SELECT D.DiseaseName, COUNT(D.Patient_ID) AS PNO " & _
" FROM PatientAffectDisease D " & _
" INNER JOIN patient P on D.Patient_ID = P.Patient_ID " & _
" WHERE P.Gender='female' AND P.Area in ('south','west') " _
" GROUP BY DiseaseName "

我认为问题出在where子句中,它与不使用括号有关

command10.CommandText = 
"SELECT D.DiseaseName, COUNT(D.Patient_ID) AS PNO " & _
" FROM PatientAffectDisease D " & _
" INNER JOIN patient P on D.Patient_ID = P.Patient_ID " & _
" WHERE P.Gender='female' AND P.Area in ('south','west') " _
" GROUP BY DiseaseName "

发布的查询无法正常工作的原因是,在生成的查询中,在“west”和“south”后面有一个额外的空格

您应该始终使用
()
对您的逻辑进行分组,以便更容易维护和理解代码,并避免出现此类错误

更难绑定,因此您之前所做的与编写相同:

(P.Gender = 'female' AND P.Area = 'west') OR P.Area = 'south' -- not correct

您可以使用
IN
运算符,而不是使用
p.Area='west'或p.Area='south'
,如下例所示:

SELECT     D.DiseaseName, COUNT(D.Patient_ID) AS PNO 
FROM       PatientAffectDisease D
INNER JOIN patient P ON D.Patient_ID = P.Patient_ID
WHERE      P.Gender = 'female' AND P.Area IN ('west','south')
GROUP   BY D.DiseaseName


发布的查询无法正常工作的原因是,在生成的查询中,在“west”和“south”后面有一个额外的空格

您应该始终使用
()
对您的逻辑进行分组,以便更容易维护和理解代码,并避免出现此类错误

更难绑定,因此您之前所做的与编写相同:

(P.Gender = 'female' AND P.Area = 'west') OR P.Area = 'south' -- not correct

您可以使用
IN
运算符,而不是使用
p.Area='west'或p.Area='south'
,如下例所示:

SELECT     D.DiseaseName, COUNT(D.Patient_ID) AS PNO 
FROM       PatientAffectDisease D
INNER JOIN patient P ON D.Patient_ID = P.Patient_ID
WHERE      P.Gender = 'female' AND P.Area IN ('west','south')
GROUP   BY D.DiseaseName


以下是您的查询文本:

SELECT 
   D.DiseaseName, 
   COUNT(D.Patient_ID) AS PNO 
FROM PatientAffectDisease D 
    INNER JOIN patient P on D.Patient_ID = P.Patient_ID 
WHERE P.Gender='female' 
     AND P.Area='south ' 
     OR P.Area='west '
GROUP BY DiseaseName 
在SQL中,
自然是

所以你实际上是在问

 WHERE (P.Gender='female' AND P.Area='south') OR (p.Area = 'west' )
必须使用括号明确说明所需的优先级

 WHERE P.Gender='female' AND (P.Area='south' OR p.Area='west')

以下是您的查询文本:

SELECT 
   D.DiseaseName, 
   COUNT(D.Patient_ID) AS PNO 
FROM PatientAffectDisease D 
    INNER JOIN patient P on D.Patient_ID = P.Patient_ID 
WHERE P.Gender='female' 
     AND P.Area='south ' 
     OR P.Area='west '
GROUP BY DiseaseName 
在SQL中,
自然是

所以你实际上是在问

 WHERE (P.Gender='female' AND P.Area='south') OR (p.Area = 'west' )
必须使用括号明确说明所需的优先级

 WHERE P.Gender='female' AND (P.Area='south' OR p.Area='west')

数据库中是否启用了区分大小写功能?如果是这样,您可能需要将所有内容都处理为上限或下限,以获得所需的匹配(当您希望使用索引时,这将非常糟糕)是否在数据库中启用了区分大小写功能?如果是这样,您可能需要将所有内容都处理为上限或下限,以获得所需的匹配项(当您希望使用索引时,这将非常糟糕)@Lion您是说我的帖子格式不好吗O;)@refp:)不,那根本不意味着。我也刚刚投票通过了所有的答案。@Lion你是说我的帖子格式不好吗?:O;)@refp:)不,那根本不意味着。我刚才也对所有的答案投了赞成票。