Query
Using subqueries with EXISTSand vice versa (does not exist):
SELECT
pt.lastname, pt.firstname
FROM
patron pt
WHERE
EXISTS (
SELECT 1
FROM performance pf
WHERE pt.patronid = pf.patronid AND pf.performanceid = 1
)
AND NOT EXISTS (
SELECT 1
FROM performance pf
WHERE pt.patronid = pf.patronid AND pf.performanceid = 4
)
Testing
See a live example in SQL Fiddle
I use only those who are in your data samples in table performance (others are not needed to prove this):
create table patron(patronid int, lastname varchar(50), firstname varchar(50));
insert into patron values
(1, 'Paul', 'Smith'),
(2, 'Linda', 'Odom'),
(3, 'Gigi', 'Koo'),
(4, 'Kailee', 'Jefferson'),
(5, 'Kimberly', 'Heart');
create table performance(performanceid int, patronid int);
insert into performance values
(1,1),(1,2),(1,3),(1,null),(4,1),(4,5),(4,3),(4,null),(7,1),(7,4),(7,3),(7,null);
My query returns:
lastname | firstname
---------+----------
Linda | Odom