1

問題は、別のテーブルへの参照が複数あるテーブルを使用していることです。基本的に、曲のオリジナル アーティスト、別のアーティストをフィーチャーしている場合、およびリミックスであるかどうかについて、3 つの異なる値を保存しています。これらはそれぞれアーティスト テーブルにリンクしており、私が望むのは、これらの各列のアーティスト名 (他のデータはありません) を返すことができるようにすることです。私はこれまでのところこれを持っています:

SELECT `songName`, `songTrackNumber`, `artist`.`artistName`,
songFeaturingArtist, songRemixByArtist
FROM `song`
LEFT JOIN artist ON songArtist = artistID

他の 2 つのフィールドを数値 ID からアーティスト名に変換する方法がよくわかりません。任意のポインタをいただければ幸いです。

4

2 に答える 2

3

結合を追加し続けるだけですが、テーブル エイリアスを使用して MySQL を快適に保ちます。

SELECT `songName`, `songTrackNumber`, 
    `a1`.`artistName` AS mainArtistName,
    `a2`.`artistName` AS songFeaturingArtistName,
    `a3`.`artistName` AS songRemixByArtistName
FROM `song`
LEFT JOIN artist a1 ON songArtist = a1.artistID
LEFT JOIN artist a2 ON songFeaturingArtist = a2.artistID
LEFT JOIN artist a3 on songRemixByArtist = a3.artistID

明確にするために、エイリアスを単純な数値サフィックスよりも便利なものに変更できます:)

于 2013-01-18T14:35:17.493 に答える
3

Artisttable on table をsong3 回結合artistNameして、table song の他のすべての列の を取得します。

SELECT  a.songName, 
        a.songTrackNumber, 
        b.artistName AS ArtistName,
        c.artistName AS FeaturingArtist,
        d.artistName AS RemixByArtist
FROM    song a
        LEFT JOIN artist b ON a.songArtist = b.artistID
        LEFT JOIN artist c ON a.songFeaturingArtist = c.artistID
        LEFT JOIN artist d ON a.songRemixByArtist = d.artistID
于 2013-01-18T14:36:15.133 に答える