2009-03-25 8 views
0

でLIKE制約から返された私は、列の値に一致するようにしようとしています返されますが、値はパターンマッチングの結果として返されます。マッチ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?'; 

あなたが見ることができるように、私が取得しようとしていますいくつかの列の値は、しかし、Javaのダービーツールは言う:

エラー42884:型「FUNCTION」の「LIKE」互換性のある引数を持つという名前の認可ルーチンが見つかりませんでした。

どうすればこのことが分かりますか?

答えて

0

JOINを使用する必要があります。私はあなたが何を目指しているのか分かりませんが、あなたが書いたことはこれまでに見たことのないSQLのようなものです。

+0

申し訳ありません、まだ学んでいます。 –

+0

ねえ、謝罪する必要はありません。私たちはまだ、すべての私たちの生活を学んでいます。 JOINという言葉のリンクを見て、それが何であるかを見てください。 – evilpenguin

+0

クエリをスカラークエリにしましたが、スカラーサブクエリでjoinを使用できるかどうか教えてください。 –

0

evilpenguinが述べたように、あなたは(私が正しくあなたを理解している場合)に参加

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?'; 

は可能性が使用する必要が

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?' 

注、これは文字通りに対してマッチングされる "khsn?"文字列。ワイルドカードを使用する場合は

、それは あるべき場所 "khsn"

EDIT

追加で始まるものにマッチします 'khsn%'

ようapp.employees.id SUBSTR OPのコメントに基づいて

+0

私の従業員テーブルには、 "khsnC001"、 "khsnA001"などの8文字のIDを保持するID列があります。今は "khsnC"、 "khsnB"などのようにdesig_idを保持しています。 khsn_ "と一致するすべての指定も" khsn_ "に一致します。 –

+0

私は結合クエリを試みましたが、エラーを返します。 http://pastebin.com/m688ad14a –

+0

私はここでいくつかのprogreessを作ったのですが、私のクエリはどうなっていますか? select * from app.employeesここで、app.employees.idは 'khsn%'と同じです(app.designation.desig_idをapp 。指定); スカラークエリは1つの行だけを返すことが許可されているので、指定表からdesginationを引き出すことができます –