Okay I managed to fix this myself. After spending half the day yesterday and most of this morning.
What I was doing was in List 2 RID and PID were lookup values from List 1 and List 3. However in List 1 and List 3 RID/PID were text strings so what I was doing was basically comparing a lookup with a text string. Even though the text of the lookup was the same it wouldn't link them.
RID: 0001 (link to List 1 element)
PID: 0001 (link to List 3 element)