1

我正在修复另一个已停止工作的开发人员编写的旧经典 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存储它是什么类型的属性,这是我们要在表中显示的值,但是我怀疑这被表中的大部分 NULL 值覆盖,p_Type因此tblUsers返回表中的空单元格。

我不想开始使用表结构,因为它们在整个站点中都使用,如果我在一个地方更改它,将会找到对它的每一个引用并全部更新它们。

有没有办法可以指定从哪个表中提取列?

当前使用以下方法调用值:

<%=rsProperty("p_Type")%>

谢谢

4

3 回答 3

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")%>
于 2012-12-19T14:50:06.377 回答
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
于 2012-12-19T14:53:57.160 回答
2

您可以为这些列设置别名 - 最好是因为消除了潜在的错误。

SELECT *, tbl_Users.p_Type AS users_type, tbl_PropertyInfo.p_type AS property_type FROM ...

当然,您可以使用别名访问这些字段。

于 2012-12-19T14:56:07.263 回答