Da Sie die Tabelle mit '*' abfragen, erhalten Sie immer alle Spalten in beiden Tabellen. Um diese Spalte auszulassen, müssen Sie alle Spalten, die Sie abfragen möchten, manuell benennen. Um Ihren anderen Bedarf zu decken, müssen Sie einfach eine Dummy-Spalte in jede Klausel in der Union-Abfrage einfügen. Unten ist ein Beispiel, das funktionieren sollte, um das zu ermöglichen, was Sie wollen -
SELECT customer.customerid, customer.customername, customer.customeraddress, newspapername, magazinename, enddate, publishedby
FROM customer
INNER JOIN
(select customerid, newspapername, null Magazinename, enddate, n.publishedby
from newspapersubscription ns, newspaper n
where publishedby in(select publishedby
from newspaper
where ns.newspapername = n.NewspaperName)
UNION
select customerid, null newspapername, Magazinename, enddate, m.publishedby
from magazinesubscription ms, magazine m
where publishedby in(select publishedby
from magazine
where ms.Magazinename = m.MagazineName))
on customer.customerid = customerid
ORDER BY customer.customerid;