Frage zu dieser SQL-Query

Tamuha

Cadet 3rd Year
Registriert
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.
 
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.
 
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?
 
Ist aber kein PHP, oder?

Im Grunde sollte das so klappen:
PHP:
WHERE a.name LIKE '%:input%'
 
ORDER BY DESCENDING a.verwendung

Ist das irgendein komischer Dialekt von SQL? Normalerweise müßte das doch heißen:
Code:
ORDER BY a.verwendung DESC
 
Zurück
Oben