2012-03-28 4 views
0

"그룹화"상점 별 데이터베이스의 모든 거래. 쿼리 후에 그룹화하지 않은 다른 모든 거래를 어떻게 표시 할 수 있습니까? 약간 다른 노트에그룹 후 다른 모든 결과를 표시하는 방법

$query = mysql_query("SELECT * FROM deals WHERE DATE_FORMAT(expiration_date,'%Y-%m-%d %H:%i:%s') >= NOW() $cat ORDER BY deal_id ASC") or die(mysql_error()); 
+0

쿼리 내'$ cat'의 값은 무엇입니까? – safarov

+0

$ cat을 사용하면 범주를 정의 할 수 있습니다. 내가 생각하는 질문에는 중요하지 않습니다. \t'$ geef = $ _GET [ 'categorie']; \t $ cat = "AND cat1 like '% $ geef %'"; ' – Nathaniel

+0

테이블 구조가 무엇입니까? 표에 표본 데이터를 포함시키고 결과를 어떻게 보이게 할 것인가하는 것이 좋습니다. – nnichols

답변

0

, 날짜가 나쁜에 따라 레코드를 검색하기 위해이 같은 쿼리 :

내가 사용하고 쿼리입니다.

SELECT * 
FROM deals 
WHERE DATE_FORMAT(expiration_date,'%Y-%m-%d %H:%i:%s') >= NOW() 
AND cat1 LIKE '%$geef%' 
ORDER BY deal_id ASC 

유효 기간의 형식은 무엇입니까? 주어진 DATE_FORMAT에 전달하면 DATE 또는 DATETIME 유형이라고 가정합니다. expiration_date을 DATE_FORMAT로 감싸는 것은 옵티마이 저가 해당 필드에서 색인을 사용하여 전체 표 스캔을 강제 수행 할 수 없음을 의미합니다. 이것은 나쁜 소식입니다!

SELECT * 
FROM deals 
WHERE expiration_date >= NOW() 
AND cat1 LIKE '%$geef%' 
ORDER BY deal_id ASC 

을 지금 옵티마이 인덱스의 첫 번째 필드로 만료를 포함하는 인덱스를 사용할 수 있습니다 -

당신은 제거 DATE_FORMAT과 같은 결과를 얻을 것이다.

필드가 cat1이라는 사실은 다른 카테고리 필드가 있다고 생각하게 만듭니다. 다시 말하지만, 이것은 나쁜 소식입니다. 그룹간에 열을 반복하는 것은 친구가 아닙니다. 그들은 모든 종류의 것들을 필요 이상으로 어렵게 만들고 비효율적입니다. 이 기사를 First Normal Form에 읽으십시오.

관련 문제