source

관계가 없는 2개의 테이블에서 선택

nicesource 2022. 12. 24. 17:21
반응형

관계가 없는 2개의 테이블에서 선택

"class" 테이블과 "account_class (class table)" 테이블이 2개 있습니다.

학급

id  name        day         time
1   course 1    sunday      08:00
2   course 2    monday      13:00
3   course 3    friday      19:00
4   course 4    saturday    01:00

및 account_class

id  username_account        id_class
1   user1                   1
2   user1                   2
3   user2                   3
4   user3                   3

user1에 의해 선택되지 않은 클래스를 모두 선택하고 싶다.왼쪽 Join, 오른쪽 Join, 안쪽 Join을 시도했지만 작동하지 않는다.

여기 내 코드가 있다

SELECT class.* FROM class WHERE NOT EXISTS (SELECT * FROM account_class WHERE account_class.username_account = 'faraazap')

코드가 올바르면 다음과 같이 표시됩니다.

id  name        day         time
3   course 3    friday      19:00
4   course 4    saturday    01:00

감사해요.

만약 당신이 user1에 의해 선택되지 않은 모든 클래스를 얻기를 원했다면 가입할 필요가 없다고 생각합니다.

SELECT *
  FROM class
 WHERE id IN (SELECT id_class 
                          FROM account_class
                         WHERE username_account <> 'user1')

단, 테이블을 결합하고 양쪽에서 정보를 얻으려면 다음 절차를 따릅니다.

SELECT c.*, ac.*
  FROM class c JOIN account_class ac ON c.id = ac.id_class
 WHERE ac.username_account <> 'user1'

SQL

SELECT class.* 
FROM class 
WHERE NOT EXISTS 
  (SELECT * 
   FROM account_class 
   WHERE account_class.username_account = 'faraazap')

이 사용자가 등록되어 있지 않으면 모든 클래스가 반환되고 사용자가 등록되어 있지 않으면 클래스가 반환되지 않습니다.이것은 당신의NOT EXISTS는 쿼리 대상 클래스를 참석 중인 클래스에 연결하지 않습니다.약간의 수정이 필요합니다.

SELECT c.* 
FROM class c
WHERE c.Id not in  
  (SELECT id_class
   FROM account_class 
   WHERE account_class.username_account = 'faraazap')

이 쿼리를 사용하여 클래스가 다음 위치에 있는 모든 클래스를 선택합니다.Id값은 이 사용자가 참석하는 클래스 목록에 표시되지 않습니다.

비교에서 paraazap을 사용할지 user1을 사용할지 잘 모르겠습니다.그러나 이 문제는 다음과 같이 "IN" 문장으로 해결할 수 있습니다.테이블 "class"의 레코드만 선택할 수 있으며 ID는 다른 select 문에 있습니다.

SELECT * 
FROM class
WHERE class.id NOT IN (
  SELECT id_class 
  FROM account_class 
  WHERE username_account = 'user1'
)
select * from class 
where id not in
(select class.id 
from class, account_class
where class.id=id_class
and username_account='user 1');

언급URL : https://stackoverflow.com/questions/68373164/select-from-2-tables-that-not-relation

반응형