조인된 집합에 모든 값이 포함되어야 하지만 더 많은 값이 포함될 수 있는 SQL
관계가 있는 테이블 집합이 주어지면 목표는 레코드를 검색하는 것입니다. 주어진 값 배열을 포함하지만 추가 값도 가질 수 있는 하나의 테이블(오퍼)에서.
SQL에서는 다음을 사용하여 이를 달성할 수 있습니다. 조인, 그룹화 및 HAVING 절의 조합입니다. 다음 쿼리는 이 작업을 수행합니다.
SELECT o.* FROM sports s JOIN offers_sports os ON os.sport_id = s.id JOIN offers o ON os.offer_id = o.id WHERE s.name IN ('Bodyboarding', 'Surfing') GROUP BY o.id -- !! HAVING count(*) = 2;
고려 사항:
ActiveRecord 구현:
def self.includes_sports(*sport_names) joins(:sports) .where(sports: { name: sport_names }) .group('offers.id') .having("count(*) = ?", sport_names.size) end
이 방법을 사용하면 지정된 스포츠 이름이 포함된 제안을 쿼리할 수 있습니다. 활성 기록:
offers = Offer.includes_sports("Bodyboarding", "Surfing")
위 내용은 SQL 조인을 사용하여 주어진 값 집합을 모두 포함하지만 잠재적으로 더 많은 값을 포함하는 레코드를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!