SQL - Mehrfacheinträge nach Häufigkeit ausgeben

Hi,

das macht man nicht mit WHERE sondern mit einer HAVING-Kausel. Aber ehrlich mal, erweitere Deine Tabelle um einen Timestamp! Das wird doch nur Murks so. Wenn mal ein Produkt durch eine Werbeaktion 200 Mal innerhalb kürzerer Zeit bestellt wird, liefert Deine Abfrage mit etwas Pech (die 50 letzten Einträge gehören alle zu diesem Produkt) auch nur dieses zurück. Wenn Du einen Timestamp in der Tabelle hast, kannst Du eine einfache gruppierte Abfrage (ohne Subquery) mit Einschränkung auf meinetwegen die letzten 2 Monate schreiben und dafür eine LIMIT-Klausel setzen. Dann bekommst Du auch wirklich genau die 50 beliebtesten Produkte der letzten 2 Monate (falls in diesem Zeitraum so viel verschiedene bestellt wurden).

LG


danke!

den Timestamp gibts in einer anderen Tabelle, in der "Bestelltabelle". Die Produkte haben eine Bestell-ID, welche die ID der Bestelltabelle ist.
Ich wollt es mir ehrlich gesagt einfach machen :-(
 
Bei einem NATURAL JOIN müssen sie gleich heißen. Das Äquivalent des NATURAL JOINS mit unterschiedlichen Namen ist ein INNER JOIN bei dem du im ON dann die Spalten angibst
 
Hi,



Du hast innerhalb von 2 Minuten beide Artikel gelesen? :suspekt:

LG

:p

natürlich nicht....
aber jetzt mal kurz für mich :-):

Ich muss also die Abfrage die schon funktioniert nochmal in einer Select-Abfrage mit Join rein tun?
So in etwa:

SELECT * FROM a.order, (Abfrage die schon funkt--select count....) WHERE order_id=a.id

in der Art, oder bin ich total daneben? Ich weiß schon, ich sollte mich zuerst vernünftig einlesen, aber ich bin so verdammt ungeduldig :-)
 
Wo ist der Join? Was ist a.order?

Join grundsätzlich
SQL:
SELECT * FROM a INNER JOIN b ON a.x = b.y
wobei a, b Tabellen; x,y die Attribute die in den Tabellen gleich sind


Und du hast glaub ich auch immer noch nicht erwähnt welches Datenbanksystem dahinter steckt.
 
Zuletzt bearbeitet von einem Moderator:
Wo ist der Join? Was ist a.order?

Join grundsätzlich
SQL:
SELECT * FROM a INNER JOIN b ON a.x = b.y
wobei a, b Tabellen; x,y die Attribute die in den Tabellen gleich sind


Und du hast glaub ich auch immer noch nicht erwähnt welches Datenbanksystem dahinter steckt.

order ist die Tabelle wo das Datum der Bestellungen mitgespeichert wird.

Ist eine Mysql Datenbank von dem Provider
 
Zuletzt bearbeitet von einem Moderator:
Zurück