连接/显示具有相同列名的多个表

时间:2012-11-03 23:16:43

标签: php mysql sql

我要做的是设置一个从数据库调用的查询(特别是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.Name | al.Name | ar.Name | m.name |

因此我可以用

轻松地调用这些内容
public function fetchArtistName(){
    return $row['ar.Name'];
}

我玩SQL时已经很久了,我真的被卡住了。任何帮助将不胜感激,我已经用Google搜索并在这里搜索。

谢谢。

1 个答案:

答案 0 :(得分:2)

我不确定您是否可以使用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'];
}