0

を比較して教師の情報を取得したいのですが、u.fld_id = ct.fld_teacher_id ct.fld_teacher_id が null の場合は、まだ割り当てられていないと表示されます。ただし、ct.fld_teacher_id が null の行は実行時に表示されません。

これが私のクエリです。

  SELECT ct.fld_id as id, ct.fld_serial, ct.fld_city, ct.fld_venue_name, 
        ct.fld_start_time, ct.fld_end_time, 
        ct.fld_duration, ct.fld_available_seats, 
        ct.fld_course_price, ct.fld_status,
        c.fld_name, u.fld_first_name, u.fld_last_name,
        ct.fld_status, ct.fld_teacher_id, ct.fld_training_name,
        ct.fld_class, ct.fld_level, ct.fld_is_fixed, tt.fld_name as training_type_name
   FROM tbl_course_training as ct, tbl_users as u,
        tbl_courses as c, tbl_training_types as tt
   WHERE c.fld_id = ct.fld_course_id AND u.fld_id = ct.fld_teacher_id AND 
       ct.fld_teacher_id = 'NULL' AND tt.fld_id = ct.fld_training_type_id 
4

1 に答える 1

0

構造を知らずに質問を整理することはできません。しかし、私が気づいたことがいくつかあります。

  • null 値を比較することはできませんct.fld_teacher_id = 'NULL'( null は文字列ではありません) 。

    ct.fld_teacher_id is null -- Correct way
    
  • いつでも選択する必要があるct.fld_teacher_id is null場合

    u.fld_id = isnull(ct.fld_teacher_id, u.fld_id) --or (sql-server) 
    u.fld_id = ct.fld_teacher_id or ct.fld_teacher_id is null --(my sql or sql-server)
    u.fld_id = COALESCE(ct.fld_teacher_id, u.fld_id)  --(my sql)
    
  • また、テーブルを結合する古い方法は避けてくださいFrom Table1 t1, Table2 t2

    From Table1 t1 JOIN Table2 t2 On t1.Key = t2.Key --Correct way
    
  • ここにいくつかの s が必要だと思いますLeft Joinこのリンクをチェックして、Sql Join の仕組みを理解してください。

于 2012-12-19T12:39:39.077 に答える