J'ai des tables [vendeur], [annonce] et [vente]. En raison d'une bizarrerie dans le fonctionnement de mon entreprise, le vendeur d'une vente peut être changé pour un autre vendeur (appelons-les ventes orphelines), mais la table [vente] est mise à jour pour refléter la nouvelle publicité. le nouveau vendeur.left join où est nul et peut-être count() = 0?
Je veux compter le prix pour les ventes d'orphelins des utilisateurs qui ont seulement des ventes ORPHELINS. Avant d'avoir le prix, je n'arrive même pas à créer une liste d'utilisateurs qui n'ont eu que des ventes orphelines. J'essaie de faire une jointure gauche avec où est nulle afin que je puisse obtenir ces publicités qui n'ont pas de ventes, et puis avoir count() = 0 afin que je puisse obtenir ces utilisateurs qui n'ont pas de ventes.
SELECT seller.id
FROM seller
JOIN advert ON advert.seller_id = seller.id
JOIN sale orphan ON advert.id = orphan.advert_id
JOIN sale accomplished_sale ON advert.id = accomplished_sale.advert_id
WHERE orphan.id IS NULL
GROUP BY seller.id
HAVING count(accomplished_sale.id) = 0
Cependant, ce que je reçois est chaque vendeur qui a au moins 1 vente sans vente, mais qui ont d'autres annonces avec des ventes. Étant donné que la relation publicité-vente est n-> 1, j'imagine qu'une jointure normale n'est qu'une jointure à gauche, n'est-ce pas? la même chose arrive avec vendeur-annonce.
Qu'est-ce que je fais mal? Des idées?
@MichaelMcGriff Oui, c'est cartésien rejoindre. Changé. –