2

ユーザー入力に基づいてジョブフィールドを出力するこれらのSQLステートメントがあります。

    SELECT jf.name, j.jname, c.cname, cj.url
    FROM company_has_job cj
        INNER JOIN job j ON j.id = cj.job_id
        INNER JOIN company c ON c.id = cj.company_id
        INNER JOIN jobfield_has_job jhj ON jhj.job_id = j.id
        INNER JOIN jobfield jf ON jf.id = jhj.jobfield_id
    WHERE jf.name LIKE '%' + @InputJob + '%'

たとえば、ユーザーが「Programmer」というクエリを入力すると、システムはデータベースに定義されているすべてのプログラマー ジョブを出力しますが、検索ボックスに「 Program 」と入力しても結果は表示されません。これは私の制御パラメータです:

<SelectParameters>
    <asp:ControlParameter ControlID="TextBox4" Name="InputExpertise" 
        PropertyName="Text"/>
</SelectParameters>

私がどこで間違ったのか教えてもらえますか?あなたの助けは大歓迎です。

4

2 に答える 2

3

これが単なるタイプミスかどうかはわかりませんが、そうすべきではありません

WHERE jf.name LIKE '''%' + @InputJob + '%'''

コードが のようLIKE '%Program%'になるように作成したことに注意してくださいLIKE %Program%

于 2012-06-20T17:22:21.527 に答える
1

まだコメントできませんが、おそらくこれで質問に答えることができます。結合する列のいずれかで NULL が許可されていますか? 内部結合は、null を含む結果を返しません。

次のクエリを検討してください。

select wb.employee,wb.Dept from web_user wb
inner join Employee e on wb.Dept = e.Department
where wb.employee like '%Ted%'

結果がありません

でもこれは:

select wb.employee,wb.Dept from web_user wb
left join Employee e on wb.Dept = e.Department
where wb.employee like '%Ted%'

戻り値: テッド NULL

また、デバッグし、データベースへの実際の呼び出しにブレークポイントを設定して、使用している SQL ステートメントを取得し、それをクエリ エディターに貼り付けることも役に立ちます。クエリが動作しないときにこれを何度も行いました。プログラムが SQL ステートメントに何を使用しているかがわかれば、問題の発見にも役立つ可能性があります。

于 2012-06-20T20:15:16.647 に答える