Matchs best per sql?

DrMueller

Erfahrenes Mitglied
Hi Leute,
vielleicht habt ihr eine Idee:
Bei unserem Telefonnummern Suchprogramm sieht die SQL-Abfrage so aus:
Code:
SELECT distinct cid, cfirstname,clastname, cmobile, name1, anr FROM Contact left join address on contact.canr = address.anr WHERE cmobile like '%9%9%9%9%'

Das klappt soweit gut, nur ist gewünscht, dass Nummern, die besser passen als andere, zuerst dargestellt werden.
Also in Etwa so:

9999
99199
9191919

etc.
Ich glaube ihr seht, was ich meine.
Da es recht grosse Listen gibt, wäre es doch sehr hinderlich, wenn tatsächlich jede einzelne Nummer durchsucht werden müsste, also zuerst mi 4 Neunen, dann mit 3, 2, etc.

Daher meine Frage: Ist das irgendwie über das SQL-Statement direkt zu lösen? Wenn nein, gibt es eine einfache Möglichkeit, die Datensätze entsprechend zu ordnen ohne eben alle noch einmal zu verarbeiten?



Danke im Voraus.
 
MS Access?

Ist wahrscheinlich nicht ganz das was du suchst.
SQL:
SELECT DISTINCT
	cid, 
	cmobile,
	weight = 0
FROM contact
WHERE cmobile like '%9999%'
UNION SELECT DISTINCT
	cid, 
	cmobile,
	weight = 1
FROM contact
WHERE cmobile like '%99%99%'
UNION SELECT DISTINCT
	cid, 
	cmobile,
	weight = 2
FROM contact
WHERE cmobile like '%9%9%9%9%'
ORDER BY weight DESC, cmobile
 
Zuletzt bearbeitet von einem Moderator:
Nein SQL Datenbank, wird von VB6 aus gestartet, daher habe ich auch die Möglichkeit es über Code zu lösen, würde jedoch das Ganze ausbemsen.
Werde Deine Idee mal probieren, so wie ich das verstanden habe, muss auch nicht jede Ausnahme überprüft werden.

Danke schon mal im Voraus.
 
Hm Yaslaw, folgendes Problem:
Deine Lösung funktioniert zwar wunderbar, aber ich muss es wegen verschiedenen SQL-Abfragen irgendwie über den Code machen.
Ich habe Deine Idee aufgegriffen und im Listview ein Feld Height eingefügt und sortiere danach.
Das Problem ist nur, dass ich anscheinend bei instr nicht mit WildCards suchen kann.

Gibts da irgend eine Lösung, wie man bei Instr oder ähnlichem mit Wildcards arbeiten kann?
 
Zurück