実現したいこと
teamsテーブル
| id | title | ……
| 1 | 巨人 |
| 2 | 阪神 |
usersテーブル
| id | name | age | title |……
| 1 | tanaka | 25 | ピッチャー |
| 2 | nakata | 30 | キャッチャー |
hobbby_skillsテーブル
| id | type | skill_id | hobby_id |……
| 1 | 1 | 1 | 1 |
| 2 | 2 | 2 | 2 |
| 3 | 3 | 3 | 3 |
| 4 | 4 | 4 | 4 |
hobbiesテーブル
| id | type | title |……
| 1 | 1 | 早い |
| 2 | 2 | 正確 |
| 3 | 3 | 丁寧 |
| 4 | 4 |ピンチヒッター|
(※ここに登場するデータは仮情報なので本当のデータではありません)
分かりにくかったら申し訳ございません。
上記のテーブルで、hobby_skillsテーブルやhobbiesテーブルのtypeの値が1か3の場合、skill_idはteamsテーブルのidと紐づき、typeの値が2か4の場合、skill_idはusersテーブルのidと紐づいています。
hobby_skillsテーブルのhobby_idがhobbiesテーブルのidと紐づいています。
ここで、usersテーブルのデータをSELECT文で表示していく時に、それぞれ対応したtypeの値のtitleを同時に表示させたいです。
例えば、nakata, 30, キャッチャー, 正確……という感じで。
説明が難しいのですが、よろしくお願いいたします。
発生している問題・分からないこと
https://waterfalls.hatenablog.com/entry/2020/05/30/013149
このサイトを参考に実施してみたのですが、私の場合間に違うテーブルがあるのでうまく表示できません。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
SELECT name,
hobbies.title AS facilities
FROM users
LEFT JOIN hobby_skills ON hobby_skills.skill_id = users.id AND hobby_skills.hobby_id = hobbies.id AND hobby_skills.type = 2, 4
全然違うと思うのですが、もうわからなさ過ぎて嫌になってきました。
補足
特になし
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/09/20 07:21
2024/09/20 07:55