我需要一个帮助。我无法使用PHP和MySQL根据某些条件从表中获取值。我在解释下面的表格。
db_subcat:
id subcat_id sub_name from_date to_date
------------------------------------------------------------
1 60 Ram 2016-10-25 2016-10-28
2 60 Ram
3 61 Raj
这里某些行没有from_date and to_date
值。我在下面解释我的查询。
$date="2016-10-23";
$sql="select * from db_subcat
where from_date <='".$date."' and to_date >= '".$date."' and from_date !='' and to_date !=''
group by subcat_id
union all select * from db_basic
where from_date ='' and to_date =''
group by sucat_id";
这里我的问题是,当表格没有(from_date ='' and to_date ='')
或(from_date !='' and to_date !='')
的条目时,我无法获得价值。这里我需要使用以下所有条件获取值。
1-如果from_date and to_date
有值,如果值存在则匹配。
2-如果from_date and to_date
具有值或空白,则应获取两个条件值。
3-如果表格没有(from_date ='' and to_date ='')
或(from_date !='' and to_date !='')
的条目。
请帮我解决此问题。
答案 0 :(得分:0)
如果我理解正确,您可能需要使用ISNULL
,并且可以将两个查询结合起来:
select * from db_subcat
where ((from_date IS NULL OR from_date ='') AND (to_date IS NULL OR to_date =''))
OR (from_date <='".$date."' and to_date >= '".$date."')
group by subcat_id
请注意,此GROUP BY
子句在除MySQL之外的所有DBMS中都无效。您不应该使用SELECT *
语句执行此操作,始终指定列,并且每列应该在GROUP BY
子句中,或者使用围绕它的聚合函数。