0

Profile_AppointmentsとProfileの2つのテーブルがあります。

プロファイルテーブルの各レコードには、他のプロファイルデータ(名、姓など)に加えて、Profile_keyとProfile_Type_Keyがあります。

担当者にはProfile_Type4があり、顧客にはProfile_Type6があります

 PROFILE TABLE
 Profile_Key    Profile_Type_key    First_Name     Last_Name
  1234                 4              John            Smith
  8765                 6              Mike            Jones

Profile_Appointmentテーブルは、各予定について2つのレコードを保持します。1つは担当者のProfile_Keyを使用し、もう1つは顧客のProfile_Keyを使用します。

 Appointment_Key        Profile_Key     
     10                    1234
     10                    8765                  

アポイントメントキーは、アポイントメントテーブルを参照します。

予定ごとに1つのレコードが生成され、プロファイルテーブルの担当者と顧客の両方のデータが含まれるクエリを作成する必要があります。

 THE RESULT I WANT
 Appointment_Key  Profile_Key Rep    Profile_Key Customer
    10                1234                    8765

これは機能していないクエリです...

  select appointment_key, p.profile_key as Rep, p2.profile_key as Customer, p.firs_name,p2.first_name from profile_appointment pa

  join profile p 
  on p.profile_key = pa.profile_key

  join profile p2
  on p2.profile_key = pa.profile_key

  where p.profile_type_key = '4' or p2.profile_type_key = '6' 

私が得るものは:

 Appointment_Key      Rep      Customer     Rep      Customer
    10                1234      1234        John       John

何が欠けているのかわかりません。ありがとう。

4

2 に答える 2

1
SELECT a1.appointment_key, a1.profile_key rep, a2.profile_key customer
  FROM appointment a1
  INNER JOIN profile p1 ON a1.profile_key = p1.profile_key AND p1.profile_type_key = 4
  INNER JOIN appointment a2 ON a1.appointment_key = a2.appointment_key
  INNER JOIN profile p2 ON a2.profile_key = p2.profile_key AND p2.profile_type_key = 6

編集:ネストされた選択がより読みやすくなる場合があります:

SELECT reps.appointment_key, reps.profile_key rep, customers.profile_key customer
  FROM (
    SELECT appointment.*
      FROM appointment
      INNER JOIN profile ON appointment.profile_key = profile.profile_key AND profile_type_key = 4
  ) reps
  INNER JOIN (
    SELECT appointment.*
      FROM appointment
      INNER JOIN profile ON appointment.profile_key = profile.profile_key AND profile_type_key = 6
  ) customers ON reps.appointment_key = customers.appointment_key
于 2012-06-06T20:12:16.033 に答える
0

両方の条件を満たす必要があるため、ORではなくANDが必要です

    select pa.appointment_key, p.profile_key as Rep, p2.profile_key as Customer, 
        p.first_name as RepName,p2.first_name as CustomerName
from profile_appointment pa    
join profile_appointment pa2 on pa.appointment_key = pa2.appointment_key
join profile p    on p.profile_key = pa.profile_key    and  p.profile_type_key = '4'
join profile p2   on p2.profile_key = pa2.profile_key   and  p2.profile_type_key = '6'  
于 2012-06-06T20:26:02.510 に答える