Prozentuale Teilmenge in MySQL

ne0hype

Erfahrenes Mitglied
Hallo Community,

folgende Situation:

ich habe eine Tabelle mit Produkten. Es gibt ein Attribute (Spalte) "top", diese kann entweder 0 oder 1 haben. Es ist eine Auszeichnung eines Produktes das als besonders "wichtig" gilt.

Ich will nun eine MySQL abfrage die mir 20 Produkte aus der Produkttabelle holt dabei sollen wiederum mehr als 50% der makierten "top" Produkte dabei sind.

Ein Beispiel mit 5 Produkten statts mit 20:

Produkt 1; top
Produkt 2
Produkt 3; top
Produkt 4; top
Produkt 5
Produkt 6
Produkt 7
Produkt 9; top
Produkt 10
Produkt 11
Produkt 12; top

die Ausgabe soll nun sein, insgesamt 5 Produkte davon soll mehr als 50% "top" Produkte sein:

Produkt 3; top
Produkt 9; top
Produkt 12; top
Produkt 5
Produkt 11

Würde mich über eine Antwort freuen... Danke

ne0hype
 
Ich würde einfach UNION benutzen und die gewünschte Anzahl an "top"-Produkten mit den anderen Zusammenfügen. Falls das keine Lösung für dein Problem ist, musst du genauer sagen was du willst. Nach welchen Kriterien soll das ablaufen (von den 50% mal abgesehen)?
 
Hi,

also das ganze soll für einen Webshop konzipiert werden. Dort soll für ein Produkt verschiedene andere Produkte auf der Produktseite angeboten werden. Es sollen dort ca. 20 Produkte gelistet werden, die rein zufällig aus der Datenbank stammen. Um aber spezielle Produkte mehr hervorzuheben hab ich mir gedacht die "rein zufällige" Auswahl ein bisschen zu manipulieren und die Top-Produkte immer in der Anzeige zu haben.

Es geht darum das verwandte Produkte angezeigt werden jedoch soll mehr als 50% der Produkte aus "TOP" Produkten bestehen. Also die prozentuale Teilmenge ist am wichtigsten.
 
Die Frage ist jetzt was genau heißt es sollen mehr als 50% sein? 51%, 65%, 79%, 99% oder 100% sind alles Werte die größer als 50% sind.

Ansonsten könntest du einfach hergehen und (bei Gesamtzahl 20) mit LIMIT die erste Abfrage auf z.B. 11 Datensätze eingrenzen und dann noch 9 Datensätze der zweiten Abfrage.

Die nächste Frage die sich stellt. Angenommen du willst 20 Produkte anzeigen aber es gibt im Moment nur sehr wenige oder sogar keinen der "top = 1" hat. Wie sollen dann 20 verschiedene Produkte gefunden werden wenn mehr als die Hälfte ein Top-Produkt sein soll?

Wäre vielleicht am einfachsten wenn du das auf 2 Abfragen aufteilen würdest und dann entsprechend der jeweiligen Gesamtmenge entscheidest was angezeigt wird.
 
Zurück