Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти записи с 1 одинаковым полем и 1 разным полем 
:(
    Опции темы
Rusman
Дата 21.11.2017, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.5.2006
Где: Пермь

Репутация: нет
Всего: нет



Здравствуйте!
Подскажите, пожалуйста, мне нужно выбрать записи из базы товаров с одинаковым артикулом, но разным полем раздел:
Пример:
К примеру в базе у нас есть?
001 / Товар 1 / Часы
001 / Товар 2 / Игрушки
002 / Товар 3 / Часы
003 / Товар 4 / Часы
003 / Товар 5 / Сумки

Выбрать по сути нам нужно только
001 / Товар 1 / Часы
001 / Товар 2 / Игрушки
003 / Товар 4 / Часы
003 / Товар 5 / Сумки
 
А если еще можно, то в идеале конечно получить только Часы (отбросив остальные записи):
001 / Товар 1 / Часы
003 / Товар 4 / Часы

Всем заранее большое спасибо! 

Это сообщение отредактировал(а) Rusman - 21.11.2017, 10:38
PM MAIL ICQ Skype   Вверх
Snowy
Дата 21.11.2017, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 1
Всего: 484



Код

select t1.* from mytable t1
join mytable t2 on t2.section_id=t1.section_id and t2.id<>t1.id
group by t1.id
order by t1.id;

PM MAIL   Вверх
Akina
Дата 21.11.2017, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 453



Цитата(Rusman @  21.11.2017,  11:33 Найти цитируемый пост)
получить только Часы

Код

SELECT *
FROM MyTable
WHERE articul IN (SELECT articul
                  FROM MyTable
                  GROUP BY articul
                  HAVING COUNT(*) > 1
                 )
AND category = 'Часы'

Либо 
Код

select t1.* 
from mytable t1
join mytable t2 on t2.section_id=t1.section_id and t2.id<>t1.id
WHERE t1.category = 'Часы'
-- group by t1.id
order by t1.id;



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Snowy
Дата 21.11.2017, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 1
Всего: 484



Я так понимаю, что под "Только часы" он имел ввиду 1-ю запись для каждого дубликата.

Код

select * from mytable t
join (
  select min(id) as id from (
    select t1.id, t1.section_id from mytable t1
    join mytable t2 on t2.section_id=t1.section_id and t2.id>t1.id
  ) z 
  group by section_id
) r on r.id=t.id

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1154 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.