2012-03-28 38 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 2012-03-28 11:30:24

+0

使用$ cat我可以定義類別。這對我認爲的問題並不重要。 \t'$ geef = $ _GET ['categorie']; \t $ cat =「AND cat1 like'%$ geef%'」;' – Nathaniel 2012-03-28 11:32:26

+0

什麼是您的表格結構?在表格中包含一個數據樣本以及您希望結果的外觀是一個好主意。 – nnichols 2012-03-28 11:59:17

回答

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類型。在DATE_FORMAT中包裝您的expiration_date意味着優化程序不能在該字段上使用索引,強制進行全表掃描。這是個壞消息!

你會得到相同的結果與刪除DATE_FORMAT -

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

現在的優化器將能夠使用含有到期日期作爲索引的第一個字段的索引。

事實上,您有一個名爲cat1的字段,我認爲您可能有其他類別字段。這又是一個壞消息。重複跨欄的組不是你的朋友。他們使各種事情比他們需要的更困難,而且效率低下。請閱讀First Normal Form上的這篇文章。

相關問題