1

私がやろうとしているのは、データベース (特に Chinook データベース - http://chinookdatabase.codeplex.com/ )から呼び出すクエリを設定することです。

ここで、クエリの出力を正しく表示するために、複数のテーブルを結合する必要があります。それぞれが同様の列名を共有しています。Chinook データベースには、複数のテーブル (アーティスト、アルバム、ジャンル、メディア タイプ、トラックなど) があります。アーティスト名の内容を次のように表示しようとしているとしましょう:

public function fetchArtistName(){
    return $row['Name'];
}

この行は、アーティスト名を検出する前にメディア タイプまたはアルバム名の名前フィールドを検出するため、非常にあいまいです。

私のSQL文は次のとおりです。

SELECT *  
FROM track AS t  
LEFT JOIN album al 
ON t.AlbumId = al.AlbumId  
LEFT JOIN artist ar ON al.ArtistId = ar.ArtistId  
LEFT JOIN mediatype m ON t.MediaTypeId = m.MediaTypeId 
LIMIT 0,15; 

出力されるテーブルを | のように変更する方法はありますか? t.名前 | al.Name | ar.名前 | m.name |

本質的にこれらをはるかに簡単に呼び出すことができるように

public function fetchArtistName(){
    return $row['ar.Name'];
}

SQL で遊んでから長い時間が経ちましたが、本当に行き詰まっています。どんな助けでも大歓迎です、私はすでにここでグーグルで検索しました。

ありがとうございました。

4

1 に答える 1

3

でこれができるかどうかわかりませんSELECT *...。次のようなことをする必要があります:

SELECT t.Name as track_name,
  al.Name as album_name, ar.Name as artist_name, m.Name as media_name 
FROM track AS t  
LEFT JOIN album al 
ON t.AlbumId = al.AlbumId  
LEFT JOIN artist ar ON al.ArtistId = ar.ArtistId  
LEFT JOIN mediatype m ON t.MediaTypeId = m.MediaTypeId 
LIMIT 0,15; 

...あなたのPHP関数が次のように定義されるように

public function fetchArtistName(){
    return $row['artist_name'];
}
于 2012-11-03T23:20:33.140 に答える