我有一份申请人名单,其中包括两个字段:accept和waitlist。对于每个字段accept和waitlist,可能的值为空(尚未考虑),是(已接受或等待)或否(已拒绝)。
我想提取一个显示以显示申请人列表,其中waitlist和accept中的任何一个或两个都设置为“是”。以下完全符合我的要求。
$query = "SELECT * FROM applicants WHERE waitlist = 'Yes' OR accept = 'Yes' ORDER BY lname,fname ASC";
我还想显示那些尚未被考虑或被拒绝的申请人名单,因此waitlist或accept的值为空或“否”。以下,似乎是对第一个陈述的明显修改,并没有消除任何人。
$query = "SELECT * FROM applicants WHERE accept != 'Yes' OR waitlist != 'Yes' ORDER BY lname,fname ASC";
如果我删除了OR语句,我至少可以看到一些未被接受的列表。修改查询以使选择为正,即
$query = "SELECT * FROM applicants WHERE accept = 'No' OR accept = '' OR waitlist = 'No OR waitlist = '' ORDER BY lname,fname ASC";
适用于接受或等候名单,但如果包含这两个字段,则只会显示所有申请人。
我确信以前曾经问过这个问题,但我找不到它。
答案 0 :(得分:0)
问题是当您想使用AND时使用OR。
SELECT * FROM applicants WHERE accept != 'Yes' OR waitlist != 'Yes';
我接受了,我不在等候名单上。 - > waitinglist ==''所以我回来了
我在等候名单上,我还没被接受。 - >接受==''所以我也重新调整了
我不在等候名单上,我还没有接受。 - >接受==''和等待名单==''所以我也重新调整了
而是使用AND
SELECT * FROM applicants WHERE accept != 'Yes' AND waitlist != 'Yes';
案例:
我接受了,我不在等候名单上。 - > waitinglist ==''所以我没有回来
我在等候名单上,我还没被接受。 - >接受==''所以我也没有重新调整
我不在等候名单上,我还没有接受。 - >接受==''和等待名单==''所以我重新调整了