Suchergebnisse nach Spalten sortieren

querytail

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine Tabelle: id, name, beschreibung, shortcuts

Nun sollen die Suchbegriffe so ausgegeben werden, dass zuerst die Ergebnisse mit Fund im Namen, danach die mit Fund in der Beschreibung usw. ausgegeben werden.

Grüße & Danke

querytail
 
Wie sucht du denn?
So?
SQL:
WHERE id = 'suchbegrif' OR beschreibung = 'suchbegriff' OER shortcuts = 'suchbegriff'

Wenn ja, könnte man es so lösen, dass man zuerst die Suchbegriffe mittels UNION in eine Spalte bringt und gleichzeitig eine Gewichtung hinzufügt.

Ich denke, etwa so einfach könnte es gehen
SQL:
SELECT
	my_data.*
FROM
	my_table AS my_data
	INNER JOIN (
		-- Eindeutige ID mit der kleinsten Priorität, falls der Suchbegriff in mehreren Feldern geunden wird
		SELECT
			d.id,
			MIN(d.priotity) AS priotity
		FROM
			(
				-- Alle Felder mittels UNUIN in eine Spalte bringen
				SELECT
					id,
					name AS value,
					1 AS priotity
				FROM
					my_table
				UNION ALL
				SELECT
					id,
					beschreibung AS value,
					2 AS priotity
				FROM
					my_table
				-- etc.
			) AS d
		WHERE
			-- WICHTIG! Hier ist die eigentliche Suche.
			d.value LIKE '%suchbegriff%'
		GROUP BY
			d.id
	) AS u_data ON my_data.id = u_data.id
ORDER BY
	u_data.priotity,
	my_data.name;
 
Zuletzt bearbeitet von einem Moderator:
Dankeschön. Kann man die Suchergebnisse in sich noch sortieren bzw. eine gewisse Fehlertoleranz einfügen?
 
Zuletzt bearbeitet:
@yaslaw: Das ist Wahnsinn, wie schnell Du das umsetzt, aber für mich "noch" nicht zu überblicken. Nach der ID suche ich nicht. Name, Beschreibung usw. sollen durchsucht werden.
 
Zurück