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.Name | 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 回答