최종 대답 일부 포인터 ...
나는 테이블이 이것과 같은 방식으로 정의되어 가정
CREATE TABLE playlists
(
playlist_id integer PRIMARY KEY,
playlist_name text
) ;
CREATE TABLE playlists_x_tracks
(
playlist_id integer,
track text,
PRIMARY KEY (playlist_id, track)
) ;
그리고 우리는 몇 가지 데이터를 채워야 :
INSERT INTO playlists (playlist_id, playlist_name)
VALUES
(1, 'list 1'),
(2, 'list 2');
INSERT INTO playlists_x_tracks (playlist_id, track)
VALUES
(1, 'track a'),
(1, 'track b'),
(1, 'track c'),
(1, 'track d'),
(2, 'track a'),
(2, 'track e') ;
SQL을 사용하고 filtered_tracks가 'track a', 'track b'및 'track x'라고 가정하면 다음 검색어를 실행하여 원하는 답변을 얻을 수 있습니다.
SELECT
*
FROM
playlists
WHERE
(SELECT
count(*)
FROM
playlists_x_tracks
WHERE
playlists_x_tracks.playlist_id = playlists.playlist_id
AND track in ('track a', 'track b', 'track x')
) >= 2 ;
이 SQL 문을 "역변환"할 수 있는지 여부 또는 확실하지 않습니다. 난 정말 Sequel을 사용하여 어디에서 SELECT를 추가할지 모르겠다. 그러나 필요한 경우 Sequel을 사용하면 사용자 지정 SQL을 직접 사용할 수 있으므로 실제로 SQL 문을 작성하고 실행할 수 있음을 항상 활용할 수 있습니다.