Union + Sortierung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Union + Sortierung

    Hallo!

    PHP-Code:
    $kw "SELECT id FROM ads WHERE keyword LIKE '%$keyword%'";
    $q1 "SELECT * FROM ads WHERE id IN ('".$kw."') ORDER BY RAND()";
    $q2 "SELECT * FROM ads WHERE id IN ('".$kw."') ORDER BY RAND()";
    $ads mysql_query("(".$q1.") UNION (".$q2.") LIMIT ".$limit
    Ich habe eine Tabelle, in der ich Werbung speicher. Nun möchte ich auf meiner Suchseite 5 Werbelinks anzeigen. Dazu möchte ich, dass die Werbelinks, deren Keywords mit dem Suchbegriff übereinstimmen, an erster Stelle kommen.

    Also hole ich mir zunächste alle IDs aus der Tabelle, wo die Keywords mit dem Suchbegriff übereinstimmen. Anschließend hole ich mir die Werbelinks aus der Datenbank, die die entsprechenden IDs enthalten. Für den Fall, dass es weniger Links sind als 5, hole ich mir im nächsten Schritt alle Werbelinks aus der Tabelle, die NICHT die entsprechenden IDs enthalten. Anschließend füge ich beide Abfragen mit UNION zusammen.

    Problem ist nun, dass obwohl ich in den Subabfragen ein "ORDER BY RAND()" drin hab, die Sortierung (aus welchen Gründen auch immer) nicht bei UNION greift, und die Links in der Reihenfolge aus der Datenbank kommen in der sie dort auch gespeichert sind.

    Hat jemand eine Idee wie sich das Problem lösen lässt? Oder funzt ORDER BY RAND() im Subquery mit Union generell nicht?

    Danke schonmal...

  • #2
    Re: Union + Sortierung

    Original geschrieben von 17.2.7.2 UNION
    Das Einfügen von ORDER BY bei einzelnen SELECT-Anweisungen in Klammern hat nur in Kombination mit LIMIT Auswirkungen. Andernfalls wird ORDER BY wegoptimiert.
    Gruss
    H2O

    Kommentar


    • #3
      Verstehe, dann muss eben ne andere Lösung her. Merci...

      Kommentar

      Lädt...
      X