2016-10-22 68 views
1

我需要一个帮助。我需要sql查询从表中获取值,并将它分组,如果表中存在重复值。我正在解释我的表。SQL查询使用PHP和Mysql从表中获取表中的值

db_basic:

id  name_id  name  date1    date2 

1  60  aaa  2016-10-22  2016-10-26 

2  60  aaa          

3  62  ccc         

这里是一些行有date1 and date2列blank.I有这样$date=2016-10-22。我输入需要使用条件$date=2016-10-22是在于date1 and date2之间获取name_id and name值。在这里,我的条件还有,如果有任何name_id行有date1 and date2列有一些值将通过比较输入日期($date=2016-10-22)获取。如果任何行没有date1 and date2列的值,那么应该获取而不与任何输入进行比较。我在下面解释我的查询。

$sql="select * from db_basic where date1 <='".$date."' and date2 >= '".$date."' and date1 !='' and date2 !='' group by name_id"; 

但使用此查询我不能让从table.My条件中的最后一行值,如果date1 and date2具有价值,它将比较其他明智的将取回从数据库中的数据,而不比较。请帮帮我。

+0

试试这个$ SQL = “从db_basic选择*其中DATE1 <='”。$日期。 “ '和date2> ='”。$日期。“”和date1!=''和date2!=''通过name_id组合所有select * from db_basic where date1 =''and date2 =''group by name_id“; – JYoThI

+0

你能回答这个问题吗? – subhra

+0

首先尝试这个,如果它的工作如你所料,那么我会发布它作为答案 – JYoThI

回答

0
$sql="SELECT * FROM `db_basic` WHERE `date1` <='$date' AND `date2` >= '$date' AND `date1` IS NOT NULL AND `date2` IS NOT NULL GROUP by `name_id`;"; 
0

只需使用UNION ALL

$sql="select * from db_basic where date1 <='".$date."' and date2 >= '".$date."' and date1 !='' and date2 !='' group by name_id union all select * from db_basic where date1 ='' and date2 ='' group by name_id "; 
+0

好吧,它的工作,但如果我通过它不工作,添加订单。 – subhra