Je suis un peu bogué pour savoir pourquoi ces deux constructions SQL ne donnent pas le même résultat.sql join -vs- where clause ne produisant pas le même résultat?
SQL # 1 retour 2 enregistrements identiques (DUP) quand une seule existe dans la table des défauts ... Voir l'image suivante sql
SELECT *
FROM Defects d
JOIN StatusCode C ON C.CodeName = d.Status AND c.scid = 10
WHERE d.AssignedTo='me'
SQL # 2 rediffusions 1 enregistrement - c'est correcte Cause lookign à données brutes il y a un défaut pas fermé pour « moi »
SELECT *
FROM Defects d
WHERE d.AssignedTo='me' AND Status <> 'closed'
tout ce que je suis en train de faire est au lieu d'utiliser un négatif où l'état non quelque chose, en utilisant un effet positif au moyen de la joindre aux dossiers qui ont chaque valeur état de défaut autre que fermé
pourquoi cela se produit-il, et comment puis-je modifier mon select avec la jointure pour corect le résultat. i essayé d'utiliser DISTINCT
mais il échoue avec:
Le type de données ntext ne peut pas être sélectionné comme DISTINCT parce qu'il n'est pas comparable.
il n'y a pas de codes d'état qui sont 'fermés', et non un seul:
select * from StatusCode where scid = 10
résultats dans ces valeurs: fixe Nouveau Prêt pour retest Échec retest Qualité Suivi rouvrez Rejeté consommation Dans le codage Ouvrir fixe Nouveau Prêt pour retest Échec retest Qualité Suivi Rouvrez Rejeté consommation Dans le codage Ouvrir
Je vois que vous avez des champs ntext dans votre base de données. Vous devez commencer à les remplacer par nvarchar (max) car ntext est obsolète et ne sera plus dans la prochaine version de SQL Server après 2008. – HLGEM