我有一个演示应用程序,使用php与访问/Jet后端。我得到了这些(简化的)表:
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但是当你有超过几个列的时候,它会变得非常冗长。有没有办法说“给Banks表中的所有列加上‘Bank’前缀”?
发布于 2009-06-29 23:49:43
不需要,尽管您可以使用别名来缩短表名。
好吧,现在可能太晚了,但我使用了字段命名约定,它完全避免了重复的字段名称。Tony's Table and Field Naming Conventions有些人喜欢它。有些人已经独立地提出了相同的解决方案。其他人则讨厌它。耸肩
也就是说,如果您使用查询构建器,那么当您查看它生成的SQL语句时,Access会为您输入所有的表名。
发布于 2009-06-30 02:12:09
没有可以打开的“为我的列添加前缀”特性,但是既然您已经在PHP中工作,那么使用适当的“AS”关键字生成SQL应该非常简单。只需循环遍历所需的字段和表,并进行一些字符串比较。
正如Tony提到的,如果您使用查询构建器,Access将自动执行此操作,因此,如果您的查询是预定义的,则可以让Access为您执行此操作。
发布于 2009-06-30 07:53:48
使用表相关名(俗称“别名”)来限定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;https://stackoverflow.com/questions/1060997
复制相似问题