2

「A like B's XXX」という形式のユーザーステータスリストを作成しています。A と B は両方とも登録ユーザーであり、名と姓、およびユーザー ID を持っています。status テーブルと user テーブルを 2 回結合して、2 人のユーザーの名前を取得する方法は? ありがとうございました。

SELECT "SQACTION"."TIMECREATED", 
       "SQWORDLIST".*, 
       "SUBJECT"."FIRSTNAME" subject_fn,
       "SUBJECT"."LASTNAME" subject_ln, 
        author.firstname author_fn, 
        author.lastname author_ln 
FROM "SQACTION" 
  INNER JOIN "SQWORDLIST"
    ON SQACTION.ACTION = SQWORDLIST.GUID 
  INNER JOIN "SQUSER" SUBJECT
    ON SQACTION.SUBJECT = SUBJECT.GUID 
  LEFT JOIN SQDOCUMENT
    ON SQACTION.ENTITY = SQDOCUMENT.GUID 
  LEFT JOIN SQUSER AUTHOR
    ON SQDOCUMENT.AUTHORID = AUTHOR.GUID 
WHERE (SUBJECT.GUID = 'B4D3BF632C0C4DB3AB01C8B284069D8F') 
   OR (SUBJECT.GUID IN ('67882AF3FA3C4254AF9A12CA0B0AB6E4',
                        '6A4B52FE233444838AACFE2AFFE4D38F',
                        '8CA3FB9061FF4710B51F1E398D3D1917')) 
ORDER BY "TIMECREATED" DESC

これは私が試したものです。ありがとうございました。

4

2 に答える 2

2

句にテーブル名を 2 回含める必要があり、テーブルの各インスタンスのどのフィールドをステートメントFROMで使用するかを指定できるようにエイリアスを使用する必要があります。ON質問で正確な例を示すのに十分な詳細を提供しなかったため、ここではより一般的なものを示します。

ID と名前を含む UserTable

UserID と SponsorID を含む RegTable

select ut1.name as [User],
       ut2.name as [Sponsor]
from   UserTable ut1
       inner join RegTable rt on ut1.id = rt.userid
       inner join UserTable ut2 on rt.sponsorid = ut2.id
于 2012-08-04T04:19:56.057 に答える
0

ステータスにはユーザーテーブルへの2つのフィールドリンクがありますか?

select user_a.first_name as user_a_first_name, user_b.first_name as user_b_first_name, status.status_name
from status
left join users as user_a on user_a.id = status.user_from_id 
left join users as user_b on user_b.id = status.user_to_id 
于 2012-08-04T04:21:41.717 に答える