1

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

追跡:

id, title, artist_id, album_id, description, cover

アーティスト:

id, name, bio

アルバム:

id, title, description, artist_id, cover

私は実際にこの要求を持っています:

SELECT * FROM `track`
LEFT JOIN album ON track.album_id=album.id
LEFT JOIN artist ON album.artist_id=artist.id

しかし、トラックがアルバムを持っていない場合にアーティスト情報を取得するために、track.album_id = 0その条件を結合するにはどうすればよいですか?LEFT JOIN artist ON track.artist_id=artist.id

4

2 に答える 2

1

正しく理解していれば、トラックにアルバムがない場合はアーティスト情報を表示したいと思います。ステートメントでaを使用して、情報やCASEその他の情報を入力できます。SELECTSELECT

SELECT col1, col2, ..., CASE
    WHEN track.album_id IS NULL # or = 0
        THEN 'Artist Info'
    ELSE track.album_id
    AS coln
FROM track
...

また、常に列リストを使用してください

于 2012-10-23T01:49:16.170 に答える
-1

やってみるかもしれない

SELECT * FROM
(SELECT * FROM `track`
LEFT JOIN album ON track.album_id=album.id
LEFT JOIN artist ON album.artist_id=artist.id) WHERE album.id IS NULL

track.album_idただし、アルバムがないことを意味するために0を使用している理由がわかりません。これは、外部キー制約を使用していないことを示しています。使用している場合、制約はtrack.album_id= 0で失敗するためです。これを実行することをお勧めします:

UPDATE track SET album_id = NULL where album_id = 0;
ALTER TABLE track ADD FOREIGN KEY album_id REFERENCES album (id);
于 2012-10-23T01:49:08.323 に答える