我有2张桌子;简介&发票。 个人资料是我的所有人都在其中的主要表格。 然后其中一些人有发票(个人可以没有,一个或多个发票)。发票表有一个字段'profileid',它将其链接到配置文件中的相关ID。 发票表有一个名为“付费”的字段,表示“已付款”或“未付款”。
希望明确
现在我有一个搜索页面,可以搜索所有个人资料。 我有2个复选框,因此您可以过滤所有已付款发票和所有未付款发票的复选框。
它可以单独使用,但不能一起使用。也就是说,如果您勾选已开具发票的方框,它会为您提供已支付发票的所有个人资料,如果您勾选未付款,则会向所有人提供未付发票;但如果勾选两个方框,它会给你0个结果,当它给你所有人都有未付和付款的发票时。
这是我的计数查询:
$query = "SELECT COUNT(DISTINCT profiles.id) AS num FROM profiles
LEFT JOIN invoices ON (profiles.id=invoices.profileid)
AND (invoices.paid='Paid' OR invoices.paid='Unpaid')
WHERE
(
IFNULL(invoices.paid, '') LIKE '$paid%'
AND IFNULL(invoices.paid, '') LIKE '$unpaid%'
);
花了很多年的时间,无法让它工作,任何帮助都非常感激。 感谢
答案 0 :(得分:1)
检查其付费AND
是否同时未支付。显然它永远不可能都是!
如果选择了两个选项,您将必须使用OR
或跳过此检查。
答案 1 :(得分:0)
SELECT COUNT(DISTINCT profiles.id) AS num FROM profiles
LEFT JOIN invoices ON (profiles.id=invoices.profileid)
AND (invoices.paid='Paid' OR invoices.paid='Unpaid')
WHERE
IFNULL(invoices.paid, '') LIKE '$paid%'
OR IFNULL(invoices.paid, '') LIKE '$unpaid%'
但完全不同的是你不应该使用插值变量(如上面的$paid
),我觉得很奇怪你必须使用LIKE '[...]%'
来选择正确的值。看起来数据库模式状况不佳。