2009-03-25 7 views
0

Je suis en train de faire correspondre les valeurs de colonnes renvoyées, mais les valeurs sont retournées à la suite de correspondance de motif:match entre les valeurs de colonnes renvoyées par contrainte LIKE dans SQL

select app.employees.id, app.employees.name, app.employees.current_bp, 
app.designation.designation from app.employees, app.designation 
where app.employees.id like 'khsn?' = app.designation.desig_id like 'khsn?'; 

Comme vous pouvez le voir, je suis en train de récupérer quelques valeurs de colonne, mais l'outil java derby indique:

ERREUR 42884: Aucune routine autorisée nommée 'LIKE' de type 'FUNCTION' ayant des arguments compatibles n'a été trouvée.

Comment puis-je obtenu à ce sujet?

Répondre

0

Vous devez utiliser un JOIN, je pense. Je ne suis pas sûr de comprendre le résultat que vous visez, mais ce que vous avez écrit là-bas ne ressemble à aucun SQL que j'ai jamais vu.

+0

Désolé, j'apprends toujours. –

+0

Hey, pas besoin de s'excuser. Nous apprenons tous encore, toutes nos vies. Consultez le lien sur le mot JOIN et voyez de quoi il s'agit. – evilpenguin

+0

J'ai fait la requête dans une requête scalaire mais pouvez-vous me dire s'il est possible d'utiliser join dans une sous-requête scalaire? –

0

AS evilpenguin mentionné, vous devez utiliser une jointure

select app.employees.id, app.employees.name, app.employees.current_bp, 
app.designation.designation from app.employees, app.designation where 
app.employees.id like 'khsn?' = app.designation.desig_id like 'khsn?'; 

pourrait être (si je comprends bien)

SELECT EMP.id, EMP.name, EMP.current_bp, 
     DES.designation 
FROM app.employees AS EMP 
INNER JOIN app.designation AS DES 
     ON SUBSTR(EMP.id,0,4) = DES.desig_id 
WHERE app.employees.id like 'khsn?' 

Notez cette correspondance par le littéral "khsn?" chaîne.

Si vous voulez un caractère générique, il devrait être OÙ app.employees.id comme 'khsn%'

qui correspondre à quelque chose en commençant par "khsn"

EDIT

Ajouté SUBSTR basé sur les commentaires de l'OP

+0

ma table employees a la colonne ID qui détient 8 ID de caractères, par exemple « khsnC001 », « khsnA001 », etc. maintenant ma table de désignation tient desig_id comme « khsnC », « khsnB » etc. Je veux récupérer tous les employés de l'appariement de la table des employés " khsn_ "et toutes les désignations correspondant à" khsn_ "aussi. –

+0

J'ai essayé de rejoindre la requête mais elle renvoie une erreur voir; http://pastebin.com/m688ad14a –

+0

Ok, j'ai fait quelques progrès voici comment ma requête regarde maintenant sélectionnez * à partir app.employees où app.employees.id comme 'khsn%' dans (sélectionnez app.designation.desig_id de l'application .la désignation); mais étant donné que les requêtes scalaires ne peuvent retourner qu'une seule ligne, je peux tirer une désignation à partir de la table de désignation –

Questions connexes