我有一个演示应用程序,使用带有Access / Jet后端的php。我有这些(简化的)表格:
People
------
ID
BankID // foreign key in Banks
Name
Address
Banks
--------
ID
Name
Address
我正在加入:
SELECT * FROM People LEFT JOIN on People.BankID = Banks.ID
避免姓名冲突的最佳方法是什么?这有效:
SELECT People.*,
Banks.ID as BankID,
Banks.Name as BankName,
Banks.Address as BankAddress
FROM People LEFT JOIN on People.BankID = Banks.ID
但是当你有多列时,它会变得很糟糕。有没有办法说“使用'Bank'为Banks表中的所有列添加前缀”?
答案 0 :(得分:2)
不,虽然您可以使用别名来缩短表名。
嗯,现在可能为时已晚,但我使用的字段命名约定完全避免了重复的字段名称。 Tony's Table and Field Naming Conventions有些人喜欢它。有些人已经独立提出了相同的解决方案。其他人讨厌它。耸肩
如果您使用查询构建器,那么当您查看它生成的SQL语句时,Access会为您输入所有表名。
答案 1 :(得分:0)
您可以打开“我的列前缀”功能,但由于您已经在使用PHP,因此使用适当的“AS”关键字生成SQL应该非常简单。只需循环遍历所需的字段和表格,并进行一些字符串比较。
正如Tony所说,如果您使用查询构建器,Access将自动执行此操作,因此,如果您的查询是预定义的,则可以让Access为您执行此操作。
答案 2 :(得分:0)
使用表格相关名称(俗称“别名”)来限定SQL中的列,例如此处P1
和B1
是相关名称:
SELECT P1.*,
B1.ID AS BankID,
B1.Name AS BankName,
B1.Address AS BankAddress
FROM People AS P1
LEFT OUTER JOIN Banks AS B1
ON P1.BankID = B1.ID;