2013-03-13 2 views
3

Я использую следующий SQL-запрос на SQL Server 2008 для выбора строк из products и categories таблиц.Избегайте повторяющихся строк в запросе SQL

SELECT 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 

Проблема в том, что некоторые строки дублируются. Эти дубликаты обычно определяются столбцом products.idProduct, поэтому я хочу изменить запрос так, чтобы тот же самый products.idProduct не отображался дважды, означает, например, что одна из строк имеет products.idProduct = 3438, а другая строка имеет тот же идентификатор продукта, что и только одна из products.idProduct

+1

Подберите свой список избранных, чтобы мы могли определить, какое поле исходит из этой таблицы (например: tablename.sku, tablename.description и т. Д.). В противном случае невозможно определить, исправит ли это 'DISTINCT', как некоторые из них. Кроме того, просьба предоставить образец результирующего набора (показывая дубликаты записей). – Chains

ответ

4

Вам нужно использовать различные. Попробуйте ниже

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 
+0

Спасибо, он отлично поработал – user580950

+0

Больше всего приветствуется. Отлично, это сработало. – DevelopmentIsMyPassion

+0

[Плохие привычки пинать: использование JOIN в старом стиле] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins. aspx) - стиль старого стиля * разделенных запятыми таблиц * был отменен с помощью ANSI - ** 92 ** SQL Standard (** 20 лет ** назад!). *** Пожалуйста, *** прекратите использовать его –

0

Использование DISTINCT, как показано ниже:

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 
+0

[Плохие привычки пинать: использование JOIN в старом стиле] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins. aspx) - стиль старого стиля * разделенных запятыми таблиц * был отменен с помощью ANSI - ** 92 ** SQL Standard (** 20 лет ** назад!). *** Пожалуйста, *** прекратите использовать его –

0

Используйте DISTINCT в своем запросе на выборку на ваших полях.

Смежные вопросы