正在修復其他開發人員編寫的舊版經典ASP站點中的錯誤,此錯誤已停止工作。下面的SQL命令用於從數據庫中調用數據創建一個表:SQL Server內部連接衝突列
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")%>
感謝
你需要**明確指定**你想要的東西列,從表。這樣做無論如何都是最佳實踐 - 不要在生產代碼中使用SELECT *! (見[不良習慣踢 - 使用SELECT *)(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/10/bad-habits-to-kick-using-select-omitting-the-列list.aspx)當你這樣做,你可以定義'p_Type'列之一的** **別名(新名稱) –
選擇在這種情況下,*本質上是效率較低,因爲它是在returing duplcate數據連接字段。此外,請認真使用()然後使用OR。現在你不能分辨是什麼意思是(p_Paid = 0或p_Enabled = 0)和p_CustomerID <> 4 或p_Paid = 0或(p_Enabled = 0和p_CustomerID <> 4) 所以你不知道如果該查詢是否正確或者是否存在錯誤。 – HLGEM