修复由另一位开发人员编写的旧经典ASP网站中的错误,该网站已停止工作。以下SQL命令用于从数据库调用数据以创建表:
SELECT *
FROM tblPropertyInfo
INNER JOIN tblUsers on p_CustomerID = u_ID
WHERE
p_Paid = 0 OR p_Enabled = 0 AND p_CustomerID <> 4
ORDER BY " & orderby
问题是tblPropertyInfo
和tblUsers
都包含一列p_Type
。在tblPropertyInfo
中,p_Type
存储它是什么类型的属性,这是我们想要在表中显示的值,但是我怀疑这被p_Type
覆盖了tblUsers
表大多是NULL值,因此返回表中的空单元格。
我不想开始使用表格结构,因为如果我在一个地方更改它,它会在整个网站上使用它会找到它的每一个引用并更新它们。
有没有办法可以指定从哪个表中提取列?
目前使用以下方式调用值:
<%=rsProperty("p_Type")%>
由于
答案 0 :(得分:4)
尝试:
<%=rsProperty("tblUsers.p_Type")%>
如果这不起作用,您可以修改查询以仅返回一种类型(以及您可能需要的任何其他列):
SELECT tblUsers.p_Type
, ... other columns here ...
FROM tblPropertyInfo
INNER JOIN tblUsers on p_CustomerID = u_ID
WHERE
p_Paid = 0 OR p_Enabled = 0 AND p_CustomerID <> 4
ORDER BY " & orderby
如果您想继续使用*
,可以使用别名:
SELECT tblUsers.p_Type as TheType
, *
您可以参考:
<%=rsProperty("TheType")%>
答案 1 :(得分:3)
您可以限定您想要的值来自哪些表格:
SELECT tblPropertyInfo.* FROM tblPropertyInfo INNER JOIN tblUsers on p_CustomerID = u_ID WHERE p_Paid = 0 OR p_Enabled = 0 AND p_CustomerID <> 4
以上将从tblPropertyInfo中选择所有内容,但tblUsers中没有任何内容
或者列出您实际想要获取的属性(显然将实际列名称放入!)
SELECT tblPropertyInfo.Id, tblUsers.p_Type, tblPropertyInfo.SomethingElse FROM tblPropertyInfo INNER JOIN tblUsers on p_CustomerID = u_ID WHERE p_Paid = 0 OR p_Enabled = 0 AND p_CustomerID <> 4
答案 2 :(得分:2)
您可以为这些列设置别名 - 最好是因为潜在的错误被消除了。
SELECT *, tbl_Users.p_Type AS users_type, tbl_PropertyInfo.p_type AS property_type FROM ...
当然,您可以使用别名访问这些字段。