我的第一个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倍以上的数据。
谢谢你的帮助。
答案 0 :(得分:0)
不,没有用于在"批处理"中提供列别名的SQL语法。模式,例如将表名作为前缀应用于所有列(顺便说一下,SQLite默认支持该功能)。
解决此问题的一种方法是按照用于获取结果的任何语言,按顺序位置而不是按名称引用列。
另一种解决方案是使用不同的列名定义表,以避免名称冲突。某些SQL标识符(例如约束名称)必须在它们所驻留的数据库中是唯一的,而不仅仅是表中的唯一标识符。它可能是您要用于将相同规则应用于列名称的命名约定。