Frage zu dieser SQL-Query

Tamuha

Cadet 3rd Year
Dabei seit
Nov. 2009
Beiträge
57
Hey Leute,

ich hätte eine Frage zu folgender SQL-Query:

Zuerst einmal möchste ich eine Suggestion-Box nutzen, in welche jemand einen oder mehrere Buchstaben eingibt, wodurch in der Suggestion Box jeweils die dazu passenden Ergebnisse mit Name und daneben die Anzahl der bisherigen Verwendungen ausgeben.

In der dazugehörigen Tabelle "item" habe ich die Spalten "Name"(String) und "Verwendung"(Integer).


Nun möchte ich über eine Anfrage alle Ergebnisse bekommen, bei denen der "Input" (z.B. "ar") am Anfang eines jeden "Name" oder mittendrin steht. Diese Namen möchte ich dann über "Verwendung" Descending sortieren.

Folgende Query habe ich mir schonmla zusammengebaut, diese geht aber noch nicht:
"SELECT a.* FROM item a WHERE a.name like :Input ORDER BY DESCENDING a.verwendung"

So ganz klappt das ganze aber noch nicht, und ich bin mir nicht sicher, was ich schreiben muss, damit er überprüft ob der Input nicht am Anfang von a.name steht, sondern auch mittendrin vorkommt.

Danke im voraus für eure Hilfe.
 

Anub1s

Lieutenant
Dabei seit
Aug. 2006
Beiträge
700
Ob du den Input so einbinden kannst kann ich dir nicht sagen. Beliebige Zeichen kannst du aber normalerweise mit % darstellen, also bspw.
Code:
SELECT * FROM users WHERE name LIKE "M%"
Bei dem :Input würde ich das ganze dann je nachdem mal mit und ohne Anführungszeichen probieren.
 

Tamuha

Cadet 3rd Year
Ersteller dieses Themas
Dabei seit
Nov. 2009
Beiträge
57
Hmm, also "input" bekomme ich durch meine JPA-Schicht übergeben.

Normalerweise müsste er input ja als normalen String ansehen, da Queries wie z.B.:
" Where a.name = :input"

Also müsste ich folgendes eingeben:

"WHERE a.name like %:input OR a.name like ???"

Wie frage ich an dieser Stelle denn genau ab, wo input in a.name vorkommt?
 
M

Mr. Snoot

Gast
Ist aber kein PHP, oder?

Im Grunde sollte das so klappen:
PHP:
WHERE a.name LIKE '%:input%'
 
Top