Пример вроде как по учебнику
(SELECT dbo.PN1.date, dbo.PN2.mp_tn3, dbo.PN2.price, dbo.PN2.id
FROM dbo.PN1 INNER JOIN
dbo.PN2 ON dbo.PN1.id = dbo.PN2.mp_pn1
WHERE (dbo.PN2.mp_tn3 = 31457))
UNION
(SELECT dbo.NO1.date, dbo.NO2.mp_tn3, dbo.NO2.price, dbo.NO2.id
FROM dbo.NO1 INNER JOIN
dbo.NO2 ON dbo.NO1.id = dbo.NO2.mp_no1
WHERE (dbo.NO2.mp_tn3 = 31457))
ORDER BY 1
UPD
забыл указать Microsoft SQL 2000 + Access 2003 adp
UPD2
Извините за беспокойство, запрос заработал.
Это был глюк той штуки, которая синтаксис проверяет.