It looks like you are going to need some many to many tables to get the info you want. This will require a bit of a DB redesign.
In a many-to-many table, the table only contains two columns of IDs you need to pair together. Make tables like this:
Jobs_Sites
=======
JobID
SiteID
Clients_Jobs
=======
ClientID
JobID
Here is a full example of a DB that would accomplish this.
CREATE TABLE IF NOT EXISTS `Jobs` (
`JobID` int(6) unsigned NOT NULL,
`JobTitle` varchar(200) NOT NULL,
PRIMARY KEY (`JobID`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `Sites` (
`SiteID` int(6) unsigned NOT NULL,
`SiteName` varchar(200) NOT NULL,
`ClientID` int(6) unsigned NOT NULL,
PRIMARY KEY (`SiteID`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `Clients` (
`ClientID` int(6) unsigned NOT NULL,
`ClientName` varchar(200) NOT NULL,
PRIMARY KEY (`ClientID`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `Jobs_Sites` (
`JobID` int(6) unsigned NOT NULL,
`SiteID` int(6) unsigned NOT NULL,
PRIMARY KEY (`JobID`, `SiteID`)
) DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `Clients_Jobs` (
`ClientID` int(6) unsigned NOT NULL,
`JobID` int(6) unsigned NOT NULL,
PRIMARY KEY (`ClientID`, `JobID`)
) DEFAULT CHARSET=utf8;
INSERT INTO `Jobs` (`JobID`, `JobTitle`) VALUES
(1, 'Big job'),
(2, 'Small job'),
(3, 'Cheap job'),
(4, 'Difficult job');
INSERT INTO `Sites` (`SiteID`, `SiteName`, `ClientID`) VALUES
(1, 'Park', 1),
(2, 'City', 2),
(3, 'Road', 1);
INSERT INTO `Clients` (`ClientID`, `ClientName`) VALUES
(1, 'Bob'),
(2, 'Hannah'),
(3, 'Jimmy');
INSERT INTO `Jobs_Sites` (`JobID`, `SiteID`) VALUES
(1, 1),
(1, 2),
(1, 3),
(2, 1),
(3, 2),
(3, 3),
(4, 3);
INSERT INTO `Clients_Jobs` (`ClientID`, `JobID`) VALUES
(1, 1),
(1, 2),
(2, 3),
(3, 4),
(3, 1);
Then you can do queries like this:
Get Job info
SELECT j.JobId,
j.JobTitle,
s.SiteID,
s.SiteName,
c.ClientId,
c.ClientName
FROM Jobs j
JOIN Jobs_Sites js ON j.JobID = js.JobID
JOIN Sites s ON s.SiteID = js.SiteID
JOIN Clients_Jobs cj ON cj.JobID = j.JobID
JOIN Clients c ON c.ClientID = cj.ClientID
WHERE j.JobID = 1
Result
JobId JobTitle SiteID SiteName ClientId ClientName
1 Big job 1 Park 1 Bob
1 Big job 2 City 1 Bob
1 Big job 3 Road 1 Bob
1 Big job 1 Park 3 Jimmy
1 Big job 2 City 3 Jimmy
1 Big job 3 Road 3 Jimmy
Get Client info
SELECT j.JobId,
j.JobTitle,
s.SiteID,
s.SiteName,
c.ClientId,
c.ClientName
FROM Jobs j
JOIN Jobs_Sites js ON j.JobID = js.JobID
JOIN Sites s ON s.SiteID = js.SiteID
JOIN Clients_Jobs cj ON cj.JobID = j.JobID
JOIN Clients c ON c.ClientID = cj.ClientID
WHERE c.ClientID = 2
Result
JobId JobTitle SiteID SiteName ClientId ClientName
3 Cheap job 2 City 2 Hannah
3 Cheap job 3 Road 2 Hannah
If this isn't exactly what you want this should get you pointed in the right direction.