Il y a encore une autre manière d'effectuer ce genre de jointure, c'est d'utiliser les jointures internes (INNER JOIN). En effet Les jointures naturelles (NATURAL JOIN sont assez ambiguës car lors de l'évolution d'un projet ou de la structure de la base de donnée concernée, il y a un grand risque qu'il n'y ait plus de jointure 'naturelle" à proprement parlé.Le plus simple, dans la mesure où dans les deux tables le champs commun est num_magasin, est d'opter pour un NATURAL JOIN :
SELECT nom_magasin, num-magasin, montant_facture
FROM Magasin NATURAL JOIN Factures
WHERE montant_facture>=1500;
Sinon vous pouvez optez pour :
SELECT nom_magasin, num-magasin, montant_facture
FROM Magasin, Factures
WHERE Magasin.num_magasin=Factures.num_magasin and montant_facture>=1500;
De plus le compilateur SQL cherche par lui-même un champs unique correspondant entre les deux tables, en utilisant INNER JOIN et la clause USING , il devient possible de faire une jointure interne spécifiée, comme ça le compilateur ne tourne pas en rond, et la requête garde son sens original.
Code : Tout sélectionner
SELECT mag.nom_magasin, mag.num_magasin, fact.montant_facture, fact.num_magasin
FROM Magasin mag INNER JOIN Factures fact
USING(num_magasin)
HAVING fact.montant_facture>=1500;