Mysql SQL选择计数两个条件
我正在制作一份在线表格。在用户填写此表单之前,会要求用户选择表单类型和表单年份。这些值分别放在$formType和$year中 我想阻止用户两次提交相同的表单,即如果用户试图提交2011年的表单,并且数据库中已经存在一个表单,那么他将被阻止这样做 因此,我需要一个带有两个条件的SELECT COUNT函数,从php变量中获得。 到目前为止,我已经在SQL中实现了这一点,但仅在使用一个条件时,如下所示:Mysql SQL选择计数两个条件,mysql,Mysql,我正在制作一份在线表格。在用户填写此表单之前,会要求用户选择表单类型和表单年份。这些值分别放在$formType和$year中 我想阻止用户两次提交相同的表单,即如果用户试图提交2011年的表单,并且数据库中已经存在一个表单,那么他将被阻止这样做 因此,我需要一个带有两个条件的SELECT COUNT函数,从php变量中获得。 到目前为止,我已经在SQL中实现了这一点,但仅在使用一个条件时,如下所示: SELECT COUNT(`formType`) FROM `table1`
SELECT COUNT(`formType`)
FROM `table1`
WHERE `formType` = '$formType' ;
然而,当我尝试过滤这两个条件时,它不起作用。代码如下:
SELECT COUNT(*)
FROM (
SELECT DISTINCT 'year', 'formType'
FROM `table1`
WHERE `year` = '$year' AND 'formType' = '$formType')
有什么想法吗?非常感谢使用“或”代替“和”
select count (*)
from table1
where (year = $year) or (formtype = $formtype)
为什么您认为需要子查询?下面应该做什么
SELECT COUNT(*)
FROM `table1`
WHERE `year` = '$year' AND `formType` = '$formType'
您可能希望允许每个用户每年使用一个表单类型,所以您希望在查询中添加第三个条件,例如
和userID=xx
(除非每个用户有一个表)。这是否有效:从表1中选择count(*),其中year='$year'和formtype='$formtype'
?不抱歉。如果我使用其中一个条件,那么它是有效的,但不是同时对两个条件都有效。这是什么结果?任何错误或错误计数?对于一个条件,它工作得很好,即如果我将该条件保留一年,并且我已经有一个年份为2007的表单,那么当我尝试输入一个年份也为2007的表单时,我是不允许这样做的。如果我使用表单类型条件,也会发生同样的情况。我的问题是:为什么给出2个条件对你不起作用?如果您提供2个条件,是否会出现任何错误?或者,当您提供2个条件时,您是否计数错误?据我所知,OP希望每年允许使用一个formtype,使用或将是错误的。@Ain:现在可能是这样,但问题第一次发布时不清楚。一个常见的初学者错误是当他们表示“或”时使用“和”。嗨,谢谢,这很有效。然而,我早些时候就尝试过这样做,但它以前不起作用。我似乎是在键入“formType”而不是“formType”,这就是为什么它不起作用的原因。@darryl schembri-如果这回答了你的问题,最好是将这个答案标记为已接受。