다음 3개의 테이블이 있습니다:
으아악다음 조건 중 하나 이상을 만족하는 보고서 테이블의 행을 가져오고 싶습니다.
으아악먼저 공개적으로 액세스할 수 있는 새 보고서를 만듭니다.
으아악그러면 user_id = 1로만 다른 보고서에 액세스할 수 있습니다.
으아악그러면 다른 보고서는 group_id=1로만 액세스할 수 있습니다
으아악이제 3개의 행이 있습니다. 각 행은 액세스 가능하고, 한 행은 user_id = 1만 액세스할 수 있고, 다른 행은 group_id = 1만 액세스할 수 있습니다.
user_id = 1인 모든 행을 제공하세요:
으아악2줄이 있어요. 효과가있다.
group_id = 1인 모든 행을 제공하세요:
으아악2줄이 있어요. 효과가있다.
하지만. report_users 또는 report_groups가 비어 있으면 결과가 나오지 않습니다. 먼저 이 쿼리를 실행합니다.
으아악이전과 동일한 쿼리를 실행하면 빈 집합이 나타납니다. 왜? 실제로 제가 보내는 user_id와 group_id는 별 차이가 없는 것 같습니다. 나는 항상 0 행을 얻습니다.
두 테이블 중 하나가 비어 있다고 해서 결과가 나오지 않는 것 같아요. 쿼리 자체에 문제가 있는 걸까요?
이 코드 줄로 무엇을 합니까?
으아악는 3개의 테이블에 대한 (이전 스타일)
CROSS JOIN
입니다. 즉, 테이블 중 하나가 비어 있으면 결과도 비어 있습니다.대신
으아악EXISTS
를 사용하세요: