1

私は2つのテーブルを持っています

IDアーティスト名
----------- -----------
エイコン1個
2 50 セント

ID曲名 IDartist IDauthor IDcomposer IDmusicProducer
------ ---- -------- -------- ---------- ---------------
1ロンリー 1 2 1 2

どの IDartist、IDauthor、IDcomposer、IDmusicProducer の名前を調べるにはどうすればよいですか?

私はこれをやろうとしましたが、うまくいきません:

選択する
曲.`IDsong`,
曲.`IDartist`,
曲.`名前`,
曲.`IDgenre`,
曲.`IDauthor`,
曲.`IDcomposer`,
曲.`IDmusicProducer`,
artist.`name` として artist_name,
song_genres.`name` ジャンル名として
FROM `曲`
LEFT OUTER JOIN `artists` ON (曲.`IDartist` = アーティスト.`IDartist` OR 曲.`IDauthor` = アーティスト.`IDartist` OR 曲.`IDcomposer` = アーティスト.`IDartist` OR 曲.`IDmusicProducer` =アーティスト.`IDartist`)
LEFT OUTER JOIN `songs_genres` ON (songs.`IDgenre` = songs_genres.`IDgenre`)
WHERE 曲.`IDsong`=XXX
4

1 に答える 1

2

アーティスト、作者、作曲家、プロデューサーの名前を取得するには、別の時間artistsにテーブルをテーブルに参加させる必要があります。songsクエリは次のようになります。

SELECT
s.IDsong, s.name,
a1.name AS artists_name,
a2.name AS author_name,
a3.name AS composer_name,
a4.name AS producer_name,
sg.name AS genres_name
FROM songs AS s
  JOIN artists AS a1 ON s.IDartist = a1.IDartist
  JOIN artists AS a2 ON s.IDauthor = a2.IDartist
  JOIN artists AS a3 ON s.IDcomposer = a3.IDartist
  JOIN artists AS a4 ON s.IDmusicProducer = a4.IDartist
  JOIN songs_genres AS sg ON s.IDgenre = sg.IDgenre

レコードのアーティスト、作者、作曲家、プロデューサーがいない可能性がある場合は、LEFT JOIN代わりにテーブルで使用する必要があります。

于 2013-11-07T15:35:27.127 に答える