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

問題は、 と の両方tblPropertyInfotblUserscolumn が含まれていることp_Typeです。ではtblPropertyInfop_Typeそれがどのタイプのプロパティであるかを格納し、これはテーブルに表示したい値ですが、これはほとんどが NULL 値であるテーブルp_Typeからのによって上書きされていると思われるため、テーブルに空のセルを返します。tblUsers

テーブル構造をいじりたくないのは、サイト全体で使用されているため、1 つの場所で変更すると、すべての参照が検索され、すべてが更新されるためです。

列を取得するテーブルを指定する方法はありますか?

値は現在、次を使用して呼び出されます。

<%=rsProperty("p_Type")%>

ありがとう

4

3 に答える 3

4

試す:

<%=rsProperty("tblUsers.p_Type")%>

それが機能しない場合は、クエリを変更して、1 つの型 (および必要な他の列) のみを返すことができます。

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 に答える