• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Sortieren nach Trefferanzahl

TecEye

New member
Hy Leute,
also ich habe Suchwörter und bilde ein Array mit den Worten die einen treffer in der Datenbank haben, daraus generiere ich eine sql abfrage mit den Suchworten mit OR

also ..... FIND_IN_SET('suchmuster1', keywords) OR FIND_IN_SET('suchmuster2', keywords) OR FIND_IN_SET('suchmuster2', keywords) ..... usw

so ich würde aber gern die Liste so sortieren, dass oben die stehen die die meisten Treffer haben.
Jemand ne idee wie man die treffer registrieren kann?
 
So wie ich dich verstehe, steht das ganze in einem WHERE. Statt dessen könntest du eine Spalte machen, in der du die ganzen Booleans addierst (nachdem du sie in eine Zahl umwandelst) und dann mit WHERE `treffer` > 0 ORDER BY `treffer` DESC aussortierst und anordnest.

- - - Aktualisiert - - -

... oder können mehrere Treffer mit einem Suchmuster erzielt werden?
 
treffer ist keine spalte der Tabelle, ich habe einen Suchmuster z.B. "Wie füge ich ein Attribut bei Betrieben hinzu?", so ich klapper jetzt jedes wort ab und gucke welche worte einen treffer in der Datenbank (bei den Keywords) haben und daraus mach ich ein array, also bleibt übrig z.B. "Attribut,Betrieb", daraus erstelle ich eine sql variable für den WHERE Part. in diesem Beispiel dann so
Code:
$sql_where = "FIND_IN_SET('attribut', keywords) OR FIND_IN_SET('betrieb', keywords)";
so und jetzt gibt es ja Einträge mit einem Treffer oder allen beiden, oder bei komplexeren Anfragen halt viel mehr und ich will würde gern nach den Einträgen mit den meisten Treffern sortieren
 
Ist schon klar, dass treffer keine Spalte in der Tabelle ist. Du sollst die ja auch dynamisch bei der Abfrage erzeugen.
Code:
SELECT
	`id`,
	FIND_IN_SET('attribut', keywords) + FIND_IN_SET('betrieb', keywords) AS `treffer`
FROM
	`tabelle`
WHERE
	`treffer` > 0
ORDER BY
	`treffer` DESC
 
Zurück
Oben