2016-10-28 9 views
0

参加します。が、私はこのコードを持っている

私がしたいことは、left joinを使用する前に、「ジオメトリ」の説明で章テーブルをフィルタリングすることです。私はこのようなコードの後に​​where -clauseを使用:

SELECT 
    c.ChapterNo, l.LessonNo 
FROM 
    Chapter c LEFT JOIN Lesson l ON c.ChapterNo = l.ChapterNo 
WHERE 
    c.desc = 'geometry' 

が、それは何も返しません。

また、VB.NETでプログラムに接続されたSQLコードを記述しています。

+0

NULLになりますあなたのDBMSでタグ付けし、またサンプルデータを提供し、クエリの期待される結果と一緒にしてください。 – MJH

+2

コードは正しいです。 Oracleを使用する場合は、 'UPPER(c.desc)= 'GEOMETRY''を使用してください –

+0

サンプル入力と希望出力は何ですか? – Teja

答えて

2

投稿したようにSql Serverを使用している場合は、大文字と小文字の区別に問題はないはずです。あなたの質問は正しいですし、あなたは章を持っていないだけです。c.desc = 'geometry'

質問をフィルタリングする方法を尋ねたところ、に参加してください。インラインクエリを使用して行うことができます

SELECT 
    c.ChapterNo, l.LessonNo 
FROM 
    (SELECT * FROM Chapter WHERE c.desc = 'geometry') c 
    LEFT JOIN Lesson l ON c.ChapterNo = l.ChapterNo 

この方法で、参加する前に章を実際にフィルタリングします。ただし、それを実行する方法はDBMSオプティマイザに任されます。オリジナルのクエリとちょうど同じ方法かもしれません - それについての説明計画を参照してください

+0

いいえ、私はすでにSQLサーバー – ABCDE

2

これを試してください。

SELECT 
    c.ChapterNo, l.LessonNo 
FROM 
    Chapter c 
LEFT JOIN Lesson l ON c.ChapterNo = l.ChapterNo AND c.desc = 'geometry' 

これは「幾何学」を一致し、残りは

+1

を使っています。しかし動作しませんでした。私は実際には、左の結合を使用して最初のテーブルをフィルタすることはできないと思う。心配しないでください、私はすでに私の問題のための代替ソリューションを見つけました。どうもありがとう! – ABCDE

+1

_ "既に別の解決策を見つけました" _ - あなたは 'desc =" geometry "'で 'lessons'をフィルタリングし始めましたか? –

+0

これは彼の元のデザインと変わらない –

関連する問題