SQL - вывод совпадающих полей

Статус
В этой теме нельзя размещать новые ответы.

Dark Wizard

Гуру форума
Регистрация
23 Сен 2007
Сообщения
194
Реакции
80
Такая проблема:

есть таблица id - art - about

art - артикул.

В таблице 15 000 позиций.

Мне нужно вывести только те, у которых совпадает артикул, в формате:

art1 - id1<br>id2
art2 - id3<br>id4<br>id5

и т.д.

Подскажите, как написать запрос на sql?

Добавлено через 54 минуты
Пока сделал так:

PHP:
$query = mysql_query("select product_code,productID,name_ru from SC_products where product_code in (select product_code from SC_products group by product_code having count(product_code)>1) limit $fromp, $howp");
while($res=mysql_fetch_assoc($query)){	
 if($res['product_code']<>''){echo "Арт: ".$res['product_code']." Название: ".$res['name_ru']."<br>";}
}
 
не полностью описана задача! вы не указали строгое соответствие строки или нет?!
если я правильно понял задание... вот набросал код с нестрогим соответствием (хотя понять логику вашего запроса и постановки задания сложно), а там подделаете как нужно:

 
Нет, мне просто нужно вывести записи с одинаковыми артикулами.
 
может я тупой... будте любезны, напишите очень подробно и логически что дано и что нужно найти (для тупых как я). Попробую вам помочь в этом вопросе. А то вы написали:
Нет, мне просто нужно вывести записи с одинаковыми артикулами.
а где их вывести и какие точно записи? запросом или при сравнении в полученном запросе, али еще как непонятно.
 
Приведи пример данных таблицы и точное условие, что нужно выводить, а что фильтровать. иначе ничего не понятно.
 
Как-то так... могу ошибиться в синтаксисе SQL, но идея должна быть понятна
Код:
SELECT id FROM table as t1 INNER JOIN table as t2 ON t1.art=t2.art WHERE t1.id<>t2.id
 
Насколько я понял, автор имеет ввиду следующее:
У него есть одна таблица с тремя полями, одно из которых (артикул) может повторяться.
Если нужно выбрать все поля, где значения повторяются, можно использовать следующий запрос (предполагает, что ваша таблица называется test_table, а поле, которое может совпадать - articul:(
Код:
SELECT * FROM `test_table` a
WHERE EXISTS (
    SELECT 1 FROM `test_table` b WHERE a.`articul` = b.`articul` LIMIT 1, 1
)
Если нужно просто посчитать, сколько раз повторяется какое-то значение в каком-то поле, тогда так (вернет только те артикулы, которые встречаются более одного раза:(
Код:
SELECT `articul`, COUNT(*) AS `entries` FROM `test_table` GROUP BY `articul` HAVING `entries` > 1
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху