0

以下のように5つのテーブルがあります。mysql クエリ ステートメント内で、トレーニング クラス データがない (つまり、女子学生も男子学生もいない) すべてのトレーニング会社のリストを取得するにはどうすればよいですか?

select training_companies.*
from training_companies
left join training_centers on training_centers.training_company_id = training_companies.id
left join training_center_programmes on training_centers.id = training_center_programmes.training_center_id
left join training_class_data on training_class_data.training_center_programme_id = training_center_programmes.id
where training_companies.id IS NULL

今までここまでしかたどり着けなかったのですが、これは間違っていると思いました。親切なアドバイス。ありがとう。

training_class_data
id | student_category_id | training_centre_programme_id | female | male
1  | 1                   | 1                            | 10     | 10
2  | 1                   | 2                            | 10     | 10
3  | 2                   | 1                            | 10     | 10
4  | 3                   | 1                            | 10     | 10

training_programmes
id | name
1  | Yoga
2  | Pilates

training_center_programmes
id | training_center_id   | status | training_programme_id
1  | 1                    | 1      | 1
2  | 2                    | 1      | 1
3  | 3                    | 1      | 1
4  | 4                    | 1      | 2
5  | 5                    | 1      | 2

training_centers
id | name          | address | postal code | training_company_id
1  | TF Center 1   | abc     | 1234        | 1
2  | TF Center 2   | abc     | 1234        | 1
3  | TF Center 3   | abc     | 1234        | 1
4  | SFT Center 1  | xyz     | 2345        | 2
5  | SFT Center 2  | xyz     | 2345        | 2
6  | KFT Center 1  | cbd     | 4234        | 3

training_companies
id | name              | address | postal code
 1 | Trim Fitness      | abc     | 1234
 2 | Stay Fit Training | xyz     | 2345  
 3 | Keep Fit Trainers | cbd     | 4234
4

1 に答える 1

0

研修クラスのデータがないすべての研修会社のリストを取得するにはどうすればよいですか

d.training_centre_programme_id IS NULLの代わりに条件を使用するだけですtraining_companies.id IS NULL:

select DISTINCT c.*
FROM training_companies              AS c
LEFT JOIN training_centers           AS tc ON tc.training_company_id         = c.id
LEFT JOIN training_center_programmes AS p  ON p.training_center_id           = tc.id
LEFT JOIN training_class_data        AS d  ON d.training_centre_programme_id = p.id
WHERE d.training_centre_programme_id IS NULL;

SQL フィドルのデモ

于 2013-03-18T08:03:35.127 に答える