SQL RAND durch Wert beeinflussen

  • Hi

    Ich habe eine Tabelle:
    ID |E-Mail | Priorität

    bsp datensätze:
    1 | a@a.de | 001000
    2 | b@b.de | 100000
    3 | c@c.de | 004643

    Summe von Priorität: 105643
    (wird gleich wichtig)

    Jetzt möchte ich einen Zufälligen Datensatz erhalten, jedoch möchte ich, dass ID2 eher vorkommt als ID1.
    Wenn man zB 105643 Abfragen macht, soll 100000 mal ID2 vorkommen. 1000 mal ID1 und 4643mal ID3

    Also mit dem Wert Priorität soll die Wahrscheinlichkeit angegeben werden... Je höher desto besser.

    Ich habe jedoch keine Ahnung wie ich das machen soll :(

    Ich hoffe ihr könnt mir helfen

    Vielen Dank
    Gruß
    WWKiller

  • Mach es doch so wie Du es beschreibst:
    Gib jedem Datensatz eine Priorität.
    Zähle jede Suchanfrage.
    Prüfe vor jeder Suchanfrage, ob eine der Prioritäten jetzt zutrifft und zeige diese an, wenn es passt.

    Wäre zumindest der "einfache" Weg über MySQL-Möglichkeiten ;)

  • In der Form sollte die Abfrage das gewünschte Ergebnis liefern:

    SQL
    SELECT id,email,priority*RAND() AS prio FROM table ORDER BY prio DESC LIMIT 1

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook