6
votes

Évitez les lignes en double dans la requête SQL

J'utilise la requête SQL suivante sur SQL Server 2008 pour sélectionner des lignes de Produits et Catégories Tables. XXX

Le problème est que certaines lignes sont dupliquées. Ces doublons sont généralement déterminés par produits.IdProductCOduct , donc je veux modifier la requête de sorte que le même produits.idproduct n'apparaît pas deux fois, signifie par exemple l'un des Les lignes ont Produits.IdProduct = 3438 et l'autre ligne a le même identifiant de produit que l'un des Produits.IdProduct est affiché


1 commentaires

Veuillez qualifier votre liste de sélection afin que nous puissions déterminer quel champ provient de quelle table (par exemple: Tablename.sku, Tablename.description, etc.). Sinon, il est impossible de dire si un distinct comme certains ont suggéré de régler cela. De plus, veuillez fournir un ensemble de résultats d'échantillon (affichant les enregistrements en double).


3 Réponses :


8
votes

Vous devez utiliser distinct. Essayez ci-dessous

SELECT distinct 
  products.idProduct, sku, description, listPrice, smallImageUrl, 
  isBundleMain, rental, visits 
FROM products, categories_products 
WHERE products.idProduct=categories_products.idProduct 
  AND categories_products.idCategory="& pIdCategory&" 
  AND listHidden=0 AND active=-1 
  AND idStore=" &pIdStore& "  
ORDER BY description


2 commentaires

Mauvaises habitudes de frappe: utiliser des jointures de style anciennes - que la liste des tables de style a été interrompue avec la norme ANSI- 92 SQL ( 20 ans !). s'il vous plaît arrêter d'utiliser


Mauvaises habitudes de frappe: Utiliser des distincts lorsqu'il existe une question de qualité de données sous-jacente ou de modèle de modélisation. Je dirais que c'est une habitude pire que la syntaxe de jointure.



2
votes

Utilisez distinct comme indiqué ci-dessous: xxx


1 commentaires

Mauvaises habitudes de frappe: utiliser des jointures de style anciennes - que la liste des tables de style a été interrompue avec la norme ANSI- 92 SQL ( 20 ans !). s'il vous plaît arrêter d'utiliser



2
votes

Utilisez distinct dans votre requête SELECT sur vos champs.


0 commentaires