2016-10-22 3 views
1

하나의 도움이 필요합니다. 테이블에서 값을 가져오고 테이블에 중복 값이있는 경우 그룹화하려면 SQL 쿼리가 필요합니다. 아래 테이블을 설명하고 있습니다.PHP와 MySQL을 사용하여 그룹에서 테이블의 값을 가져 오는 Sql 쿼리

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 .I 같은 입력 $date=2016-10-22date1 and date2 사이에 놓여있는 상태를 사용 name_id and name 값을 인출 할 필요가 있습니다. 여기에 내 조건도 name_id 행에 date1 and date2 열이있는 경우 입력 날짜 ($date=2016-10-22)를 비교하여 가져올 일부 값이 있습니다. 행에 date1 and date2 열에 값이 없으면 모든 입력과 비교하지 않고 가져와야합니다. 나는 아래에 나의 질문을 설명하고있다. date1 and date2는 다른 현명한는 비교하지 않고 데이터베이스에서 데이터를 가져옵니다 비교합니다 값이있는 경우

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

그러나이 쿼리를 사용하여 내가 table.My 상태에서 마지막 행의 값을 얻을 수있다. 도와주세요.

+0

이 $의 SQL = 시도 사용 "db_basic SELECT * FROM 경우 날짜 1 <= '". $ 날짜입니다. "'및 DATE2> = '". $ 날짜입니다. "' and date1! = ''and date2! = ''by group by name_id union all select * from db_basic 여기서 date1 = ''및 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

관련 문제