Wyszukanie klientów którzy wypożyczyli zestaw książek

0

Witam, mam pewien problem ze skonstruowaniem zapytania, które można sprowadzić do tytuowego. Struktura bazy:

clients

client_id _client_name
1 Paweł
2 Gaweł

clients_books

client_id book_id
1 1
1 4
1 6
2 2
2 5
2 6

potrzebuję zapytania, które zwróci wszystkich klientów którzy wypożyczyli np 2 ksiązki (id==4 i id==6)?
Jedyne co mi się udało na razie wymyśleć to coś takiego:

SELECT 
    *
FROM
    clients
where
    (SELECT 
            count(distinct clients_books.book_id)
        FROM
            clients_books
        where
            clients_books.client_id = clients.client_id
                AND (clients_books.book_id = 4 OR clients_books.book_id = 6)
        group by user_id) = 2 

Czy jest jakiś bardziej poprawny sposób?

1
select c.client_name from clients c inner join clients_books b on c.client_id = b.client_id 
where b.book_id in (4,6) 
group by c.client_name 
having count(b.book_id) = 2
0
michal84 napisał(a):
select c.client_name from clients c inner join clients_books b on c.client_id = b.client_id 
where b.book_id in (4,6) 
group by c.client_name 
having count(b.book_id) = 2

Co jeżeli ktoś wypożyczył dwie książki o id = 4?

1 użytkowników online, w tym zalogowanych: 0, gości: 1