programing

하나의 테이블에서 하나의 열을 통해 관계에 있는 두 개의 테이블에서 값을 가져오는 방법

powerit 2023. 10. 25. 23:49
반응형

하나의 테이블에서 하나의 열을 통해 관계에 있는 두 개의 테이블에서 값을 가져오는 방법

두 개의 간단한 테이블 사이에 다음과 같은 관계가 있습니다.

Table USERS:
ID  Name
100 User1
243 User2
681 User3

Table MSGS:
FromU ToUser Txt [... DTime]
243   100    Bla bla bla
100   243    Taaa
243   681    Bo bo bo
681   243    Mi mi miiii
681   100    Exemples
100   681    Very good

Relationship:
FromU -> ID (table USERS)
ToUser -> ID (table USERS)

어떻게 하면 한 사용자가 다른 사용자에게 보내는 모든 메시지와 다른 사용자와 사용자의 이름으로 받은 답변을 받을 수 있을까, 나는 방황합니다.
예를 들어 User2가 보낸 모든 메시지와 User2에게 보낸 메시지를 반환하려면 다음 데이터가 필요합니다.

FromU  Name    ToUser  Name   Txt
243    User2   100     User1  Bla bla bla
100    User1   243     User2  Taaa ...
243    User2   681     User3  Bo bo bo
681    User3   243     User2  Mi mi miiii

사용자 이름을 알 수가 없습니다.이 SQL로

SELECT FromU, ToUser, Txt 
FROM msgs 
WHERE FromU = 243 OR ToUser = 243 
ORDER BY DTime ASC

알겠습니다.

243   100    Bla bla bla
100   243    Taaa ...
243   681    Bo bo bo
681   243    Mi mi miiii

감 잡히는 게 없어요?저는 MariaDB를 사용합니다.미리 감사드립니다!

사용자와 함께 조인을 사용해야 합니다(샘플에는 두 이름을 모두 얻기 위한 두 개의 조이가 있습니다).

  "SELECT m.FromU, m.ToUser, m.Txt, u1.Name as from_name, u2.name as to_name 
   FROM msgs m
   INNER JOIN user u1 on m.FromU = u1.id
   INNER JOIN user u2 on m.ToU = u2.id
   WHERE m.FromU = 243 OR m.ToUser = 243 
   ORDER BY m.DTime ASC" 

MariaDB를 사용해 본 적은 없지만 TSSQL에서는 다음과 같은 작업을 수행합니다.

SELECT from.Name as FromUser, to.Name, Txt FROM MSGS INNER JOIN USERS AS from ON from.ID = FromU INNER JOIN USERS AS to ON to.ID = ToUser WHERE FromU = 243 OR ToUser =243

도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/50337523/how-to-get-values-from-two-tables-in-relationship-thru-one-column-in-one-table

반응형