附件是一张几乎描述我整个问题的图片:
直接链接:http://i.imgur.com/IAqqaWZ.png
我有一张下拉表。通常,它会显示四个条目,通过此语句我想要的所有条目:
$sql="SELECT users.first_name, users.last_name, users.user_id, payments.fk FROM users, payments WHERE landlord = '0'";
所以一切正常,直到我将sql行更改为:
$sql="SELECT users.first_name, users.last_name, users.user_id, payments.fk FROM users, payments WHERE landlord = '0' AND payments.fk != 'users.user_id'";
基本上,我想要选择的是,每个人都将房东标志设置为0(在上面的代码中工作正常),并且那些房东标志设置为0的人,我想只挑选那些不在付款表中的人。所以基本上应该发生的事情是,下拉应该只显示三个人..相反,只需将AND语句添加到我的代码中,它现在显示4个人(由于某种原因每个4次),包括一个人是在付款表中。
有谁知道如何解决这个问题?很抱歉这个糟糕的解释。
答案 0 :(得分:2)
尝试使用LEFT JOIN
,并检查payment
字段IS NULL
是否
SELECT users.first_name, users.last_name, users.user_id, payments.fk
FROM users
LEFT JOIN payments
ON payments.fk = users.user_id
WHERE landlord = 0 AND payments.fk IS NULL
SQLFiddle示例 - http://sqlfiddle.com/#!2/46a88c/2