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

Php 连接/显示具有相同列名的多个表,php,mysql,sql,Php,Mysql,Sql,我试图做的是设置一个从数据库(特别是Chinook数据库-)调用的查询 现在,为了正确显示查询输出,我需要连接多个表——每个表共享相似的列名。在Chinook数据库中,有多个表(艺术家、专辑、流派、媒体类型、曲目等)。假设我试图用以下内容显示艺术家姓名的内容: public function fetchArtistName(){ return $row['Name']; } 这是非常模糊的,因为此行将在找到艺术家名称之前找到媒体类型或唱片集名称的名称字段 我的SQL语句如下: SELE

我试图做的是设置一个从数据库(特别是Chinook数据库-)调用的查询

现在,为了正确显示查询输出,我需要连接多个表——每个表共享相似的列名。在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.名称| ar.名称| m.名称|

这样我就可以更容易地用

public function fetchArtistName(){
    return $row['ar.Name'];
}
我已经很久没有使用SQL了,我真的被卡住了。任何帮助都将不胜感激,我已经在这里搜索过了


谢谢。

我不确定您是否可以使用
选择*…
来完成此操作。您需要执行以下操作:

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'];
}

嗯。。。
选择t.*,al.*,ar.*,m.*
在这里不起作用吗?顺便说一句,你真的需要获取所有字段吗?是的。停止懒惰,使用
选择*
,并提供特定的列名和别名:
选择t.name作为TrackName,a.name作为AlbumName,…
,然后可以使用
返回$row['AlbumName']:-)