Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment supprimer les colonnes en double de la jointure dans SQL

Puisque vous interrogez la table avec '*', vous obtiendrez toujours toutes les colonnes des deux tables. Pour omettre cette colonne, vous devrez nommer manuellement toutes les colonnes que vous VOULEZ interroger. Pour répondre à votre autre besoin, vous devez simplement insérer une colonne factice dans chaque clause de la requête d'union. Vous trouverez ci-dessous un exemple qui devrait fonctionner pour permettre ce que vous voulez -

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;