Sortierung nach mehreren Kriterien

mC pAiN

Erfahrenes Mitglied
Hallo,

ich mal wieder :-)

Ich habe eine Produkt-DB und möchte jetzt mittels eines Select-Feldes (Formular) mehrere Möglichkeiten anbieten meine Produkte zu sortieren. Diese wären u.A.

- nur die neuesten 5 Produkte anzeigen
- Produkte der letzten 7 Tage

wie schreibe ich den Select für diese Auswahl Box :confused:
 
Datenbank? Ohne wirds schwer Dir zu helfen. Aber ich nehm mal an Access.

1. Fall
SELECT TOP 5 * FROM myTable ORDER BY timestamp DESC;

2. Fall
SELECT Produkte FROM myTable WHERE timestamp = (Heute - 7 Tage);

Hier stellt sich natürlich die Frage wie du dein Datum abgebildet hast. Wirst wohl ausrechnen und befüllen müssen. Aber obiger Ansatz sollte reichen.

Nitro
 
Als Datenbank hab' ich MySQL. Das Datum übergebe ich schon mit in die DB. Format: YYYY-MM-DD

Danke für deine Ansätze. Werde ich heute direkt mal umsetzen... ;)
 
Ok, ich habe jetzt ein wenig rumprobiert und es klappt auch einigermaßen.
Für die letzten 5 Produkte hatte ich folgendes probiert:

PHP:
SELECT * from $tabelle_pr LIMIT 5

Problem dabei: Er zeigt mir die ersten 5 und nicht die letzten 5. Also hab ich in der MySQL Doc geschaut und folgendes gefunden:

PHP:
SELECT a,COUNT(b) FROM tabelle GROUP BY a DESC

Den Teil mit dem GROUP BY a DESC habe ich bei meinem hinten angehängt:

PHP:
SELECT 'produkt_id', 'produkt_name', 'produkt_anummer', 'produkt_preis', 'produkt_vkosten' from $tabelle_pr LIMIT 5 GROUP BY 'produkt_id' DESC

Aber ich bekomme einen Syntax-Fehler... Woran liegt und/oder wie machts man richtig?
 
Mein Vorschlag für die Top-5:
Code:
SELECT
  produkt_id,
  produkt_name,
  produkt_anummer,
  produkt_preis,
  produkt_vkosten
FROM
  tabelle_pr
ORDER BY
  produkt_id DESC
LIMIT 5
Also praktich einfach die ersten 5 (LIMIT 5) wenn man nach produkt_id abwärts sortiert (ORDER BY produkt_id DESC). Ich find's so am einfachsten, weiss aber nicht, ob das das schnellste ist.

Mein Vorschlag für die Produkte der letzten 7 Tage:
Code:
... WHERE datum >= DATE_SUB(NOW(), INTERVAL 7 DAY)
 
Jetzt klappt es. Ich hatte es dann auch mal umgekehrt versucht, d.h. erst das ORDER BY und dann das LIMIT 5...

Danke für die Tipps ;)
 
Zurück