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

Тема в разделе "PHP", создана пользователем Dark Wizard, 26 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    Такая проблема:

    есть таблица 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>";}
    }    
     
  2. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    731
    Симпатии:
    421
    не полностью описана задача! вы не указали строгое соответствие строки или нет?!
    если я правильно понял задание... вот набросал код с нестрогим соответствием (хотя понять логику вашего запроса и постановки задания сложно), а там подделаете как нужно:

    Код:
    SELECT * FROM `ВАША_ТАБЛИЦА` WHERE art = "id1<br>id2" OR art = "id3<br>id4<br>id5" OR art LIKE "%id1<br>id2%" OR art LIKE "%id3<br>id4<br>id5%" LIMIT 0,30;
     
  3. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    Нет, мне просто нужно вывести записи с одинаковыми артикулами.
     
  4. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    731
    Симпатии:
    421
    может я тупой... будте любезны, напишите очень подробно и логически что дано и что нужно найти (для тупых как я). Попробую вам помочь в этом вопросе. А то вы написали:
    а где их вывести и какие точно записи? запросом или при сравнении в полученном запросе, али еще как непонятно.
     
  5. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    Приведи пример данных таблицы и точное условие, что нужно выводить, а что фильтровать. иначе ничего не понятно.
     
  6. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Как-то так... могу ошибиться в синтаксисе SQL, но идея должна быть понятна
    Код:
    SELECT id FROM table as t1 INNER JOIN table as t2 ON t1.art=t2.art WHERE t1.id<>t2.id
    
     
  7. Eihwaz

    Eihwaz

    Регистр.:
    7 окт 2007
    Сообщения:
    156
    Симпатии:
    54
    Насколько я понял, автор имеет ввиду следующее:
    У него есть одна таблица с тремя полями, одно из которых (артикул) может повторяться.
    Если нужно выбрать все поля, где значения повторяются, можно использовать следующий запрос (предполагает, что ваша таблица называется 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
    
     
Статус темы:
Закрыта.