在多个连接上对多个列进行别名的快捷方式?

时间:2014-07-21 14:50:42

标签: mysql alias filemaker

我的第一个mySQL项目。

我正在将FileMaker DB迁移到mySQL,并且无法有效地处理来自3个左连接表的重复字段(列)名称,以及每个表提供大量列(50+)这一事实。我理解别名列的概念。有没有比创建数百个别名行来处理每个表中的每个列更好的方法?我已经搜索了网站,但没有找到处理大量列的讨论,这在FileMaker DB中很常见......也许不在mySQL中。

下面是当前代码,我为3个连接表中的每一个创建了~50个字段的ONE(WebPublish)的别名:

$query = "SELECT

Artwork.WebPublish as Artwork_WebPublish,
Artist.WebPublish as Artist_WebPublish,
Location.WebPublish as Location_WebPublish

FROM Review 

LEFT JOIN Artwork ON Review._kf_ArtworkID = Artwork.__kp_ArtworkID 
LEFT JOIN Artist ON Review._kf_ArtistID = Artist.__kp_ArtistID 
LEFT JOIN Location ON Review._kf_LocationID = Location.__kp_LocationID  

WHERE __kp_ReviewID = ?";

此查询为每个连接表中的一列生成所需的响应:

Array
(
    [Artwork_WebPublish] => Yes
    [Artist_WebPublish] => No
    [Location_WebPublish] => Maybe
)

问题是我是否需要扩展别名,以便包含49倍以上的数据。

谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

不,没有用于在"批处理"中提供列别名的SQL语法。模式,例如将表名作为前缀应用于所有列(顺便说一下,SQLite默认支持该功能)。

解决此问题的一种方法是按照用于获取结果的任何语言,按顺序位置而不是按名称引用列。

另一种解决方案是使用不同的列名定义表,以避免名称冲突。某些SQL标识符(例如约束名称)必须在它们所驻留的数据库中是唯一的,而不仅仅是表中的唯一标识符。它可能是您要用于将相同规则应用于列名称的命名约定。