2016-10-22 63 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