3

私は楽器リストと教師の楽器リストを持っています。

ID と名前を含む完全な機器リストを取得したいと考えています。

次に、teachers_instrument テーブルで楽器を確認し、特定の教師が新しい列に楽器の追加NULLまたは値を持っているかどうかを確認します。1

次に、これを使用して、Codeigniter のいくつかのインストゥルメント チェックボックスをループできます。必要に応じて DB からデータをプルする方が理にかなっているように見えますが、クエリの記述に苦労しています。

teaching_instrument_list

- id
- instrument_name

 teachers_instruments

- id
- teacher_id
- teacher_instrument_id

 SELECT
  a.instrument,
  a.id
 FROM
   teaching_instrument_list a
 LEFT JOIN
 (
    SELECT teachers_instruments.teacher_instrument_id
    FROM teachers_instruments
    WHERE teacher_id = 170
 ) b ON a.id = b.teacher_instrument_id  

私のクエリは次のようになります。

 instrument name    id   value
 ---------------    --   -----
 woodwinds          1    if the teacher has this instrument, set 1
 brass              2     0
 strings            3     1
4

2 に答える 2

1

さて、これはこのように達成することができます

SELECT
  id,
  instrument_name,
  if(ti.teacher_instrument_id IS NULL,0,1) as `Value`
from teaching_instrument_list as til
  LEFT JOIN teachers_instruments as ti
    on ti.teacher_instrument_id = til.id

列を追加し、teacher_instrument_idを確認します。見つかった場合は値を1に設定し、それ以外の場合は0に設定します。

于 2013-02-11T18:04:01.860 に答える