2011-02-01 7 views
0

変数 'userid'があり、aspnet_Membershipテーブルとaspnet_AccountProfileテーブルから選択したいとします。彼らはどちらもカラムのユーザIDを持っています、私はちょうどSELECT * FROM aspnet_AccountProfile、aspnet_Membership WHERE UserId = @ UserIdのようなステートメントを作ることができるようにしたい、そしてBOTHテーブルの一致するユーザIDを持つレコードを取得します。どうすればいいですか?ありがとうございました!両方のテーブルにある1つの変数を使用して、2つのテーブルのデータをどのように引き出すのですか?

答えて

2

JOINと呼ばれている:

正確に何をしたいデータに基づいて参加するにはいくつかの基本的な種類があります。これらは集合理論/関係代数に関連している。私は、最も一般的なものをリストアップします:

INNERあなたは、両方のテーブルが一致するユーザーIDを持つ行のすべての組み合わせを返したい場合に使用します

を登録しよう。一部の行がの場合、テーブルが内部結合で返されないことがあります。追加もちろん

SELECT * FROM aspnet_AccountProfile, aspnet_Membership 
WHERE aspnet_AccountProfile.UserId = aspnet_membership.UserId 

、あなたが望む特定のユーザーIDを選択するために、:

SELECT * FROM aspnet_AccountProfile INNER JOIN aspnet_Membership 
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId 

、JOIN INNERを書くのもう一つの方法は、(私はあなたが理解したい場合は加入奨励しないであろう)であります上の条件表:

とaspnet_AccountProfileのいずれかです。ユーザーID = @UserId

OR

とaspnet_Membership.UserId = @UserId

これら二つのどちらかが内部結合のために正常に動作します。あなたは、クエリの最初のテーブル、および第二の表のユーザーIDは、最初に一致するすべての組み合わせからすべて行を返したいとき

LEFT OUTERは

使用これを登録しよう。 2番目のテーブル(この例ではMembership)の一部の行が返されないことがあります。

SELECT * FROM aspnet_AccountProfile LEFT JOIN aspnet_Membership 
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId 

あなたは、このケースでは、あなたの基準を絞り込む左の列を使用する必要があり、または、JOINは自動的にINNERに変換されます。

aspnet_AccountProfile.UserId = @UserId

RIGHT OUTERはLEFT外部結合として、それは通常、書き込むことができますので、これは、かなり珍しいです

を登録しよう。これは左外部結合のようなものですが、リレーション内の2番目のテーブルのすべての行が、最初のテーブルの代わりに返されます。

SELECT * FROM aspnet_AccountProfile RIGHT JOIN aspnet_Membership 
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId 

FULL OUTERあなたは会員で対応する行にAccountProfileで一致するユーザーIDを持つすべての行を関連付ける必要があるが、また、いずれか内のどの行を知っておく必要がある場合は、この

使用を登録しよう他のテーブルには一致しません。唯一のシングルユーザー用

SELECT * FROM aspnet_AccountProfile FULL OUTER JOIN aspnet_Membership 
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId 

の取得結果は、FULL OUTER JOINをして少しトリッキーです。いずれの表でも、NULLまたは正しい値が大丈夫であることを指定する必要があります。

0

こんにちは、

はあなたが

を使用することによってそれを行うことができます「SELECT * aspnet_AccountProfile APから、aspnet_MembershipメートルWHERE ap.UserId = m.UserId ANB ap.UserId = @ UserId "

0

内部結合によってこれを行うことができます。ここで

は一例であり、

Select aspnet_Membership.*, aspnet_AccountProfile.* from aspnet_AccountProfile 
inner join aspnet_Membership on aspnet_Membership.userid = aspnet_AccountProfile.userid 
where [email protected] 

これは、ユーザーIDは、両方のテーブルに共通であるwhemレコードのみを取得します。あなたは1つのテーブルにあるレコードを取得したいとか、他ではあってもなくてもよい場合

あなたはユーザー左は、あなたが参加し使用することができます

Select aspnet_Membership.*, aspnet_AccountProfile.* from aspnet_AccountProfile 
left join aspnet_Membership on aspnet_Membership.userid = aspnet_AccountProfile.userid 
where [email protected] 
0

である加入しなければなりません。以下のような

何か:あなたはシンプルなインナーを使用することができます

Select * from aspnet_AccountProfile INNER JOIN aspnet_Membership 
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId 
Where aspnet_AccountProfile.UserId = @UserId 

おかげで、
Vamyip

0

は、このために参加します。

関連する問題