我有一张简单的表格:
id | from | tu | status_os1 | status_os2
状态os1和os2只能是paid
或unpaid
。
我想要显示一条消息"您已支付所有会费"。 所以我的问题是 - 只有当所有记录都有值"付费"?
时,我应该在sql部分写什么来给出答案?我试图以这种方式做,但它也失败了。
$rezultat = $polacz->query("SELECT case when COUNT(status_os1) = 0 then 1 end FROM skladki WHERE status_os1='unpaid'");
$wynik = $rezultat->num_rows;
if($wynik>0)
{
echo "You have all dues paid";
}
答案 0 :(得分:0)
SELECT COUNT(*)FROM skladki WHERE status_os1 ="付费"和status_os2 ="付费"
答案 1 :(得分:0)
您可以在CASE
中使用COUNT()
表达式
SELECT
COUNT(case when status_os1 = 'paid' and status_os2 = 'paid' then 1 else 0 end)
FROM skladki;
答案 2 :(得分:0)
我会从另一方面接近这一点:如果没有任何一行有status_o1或status_o2为' unpaid':
,则会给出消息$rezultat = $polacz->query("SELECT COUNT(*) AS cnt FROM skladki WHERE status_os1='unpaid' or status_os2='unpaid'");
$row = $rezultat ->fetch_assoc();
$wynik = $row["cnt"];
if($wynik==0)
{
echo "You have all dues paid";
}
答案 3 :(得分:0)
您需要一个子查询来过滤掉所有记录,对于该人或客户,表中没有记录值为'未支付'。
Select * from table t
where not exists
(Select * from table
Where id = t.Id
and 'unpaid' in
(status_os1, status_os2))
答案 4 :(得分:0)
从背面尝试:
SELECT COUNT(*) FROM skladki WHERE status_os1 = "unpaid" or status_os2 = "unpaid"
如果至少有1条记录 - 某些记录处于未付款状态:)
答案 5 :(得分:0)
使用case
表达式有条件地计算所有未付款的项目。如果返回0,则返回所有付费消息。
select case when count(case when status_os1 = 'unpaid' or status_os2 = 'unpaid' then 1 end) = 0 then 'You have all dues paid'
else 'You have unpaid dues'
end
from skladki