2012-03-28 6 views
0

Ich "Group By" alle Angebote in meiner Datenbank nach Laden. Wie kann ich alle anderen Deals anzeigen, die nach der Abfrage nicht gruppiert wurden?Wie zeigt man alle anderen Ergebnisse nach der Gruppe Von

Dies ist die Abfrage Ich verwende:

$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

Was ist der Wert von '$ cat' in Query? – safarov

+0

Mit $ cat kann ich die Kategorien definieren. Es ist nicht wichtig für die Frage, die ich denke. \t '$ geef = $ _GET ['kategorie']; \t $ cat = "UND cat1 like '% $ geef%'"; ' – Nathaniel

+0

Wie ist Ihre Tabellenstruktur? Es wäre eine gute Idee, eine Stichprobe von Daten in die Tabelle aufzunehmen und zu sehen, wie das Ergebnis aussehen soll. – nnichols

Antwort

0

Auf eine etwas andere Note, eine Abfrage wie diese Datensätze abzurufen basierend auf Datum schlecht ist.

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

Welches Format hat Ihr Ablaufdatum? Da Sie es an DATE_FORMAT übergeben, würde ich annehmen, dass es sich um einen DATE- oder DATETIME-Typ handelt. Wenn Sie Ihre expiration_date in DATE_FORMAT einschließen, bedeutet dies, dass der Optimierer keinen Index für dieses Feld verwenden kann, wodurch ein vollständiger Tabellenscan erzwungen wird. Das sind schlechte Nachrichten!

Sie das gleiche Ergebnis mit dem DATE_FORMAT entfernt bekommen -

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

und jetzt wird der Optimierer der Lage sein, einen Index zu verwenden, die expiration_date als das erste Feld im Index enthält.

Die Tatsache, dass Sie ein Feld namens cat1 haben, führt mich zu der Annahme, dass Sie andere Kategorie Felder haben können. Auch dies sind schlechte Nachrichten. Wiederholte Gruppen in Spalten sind nicht dein Freund. Sie machen alle möglichen Dinge schwieriger als sie sein müssen und sie sind ineffizient. Lesen Sie diesen Artikel auf First Normal Form.

Verwandte Themen