powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос из двух таблиц
7 сообщений из 7, страница 1 из 1
запрос из двух таблиц
    #32975773
extra-lights
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!
Подскажите пожалуйста..
есть две таблицы: допустим товары и рубрики. Товары могут находиться в нескольких рубриках. И есть определнный флаг товара (но он может быть разным, в зависимости от рубрики)
Итого три таблицы:
1. table items: (товары)
id
title

2. table groups: (рубрики)
id
title

3. table item_groups: (связь товар-рубрика)
item_id
group_id
flag

Есть необходимость выбрать товары (без учета рубрики) с сортировкой по полю flag:

SELECT a.id, a.title, b.flag FROM items AS a LEFT JOIN groups AS b ON a.id = b.item.id ORDER BY b.flag, a.title;

Список получается, сортируется нормально, но если товар входит в несколько рубрик, то записи в выборке повторяются (чего и следовало ожидать, т.к. в таблице item_groups значения item_id повторяются). DISTINCT на id не помогает (в этом повторяются только те записи, которые входят в несколько рубрик и у которых при этом разный flag).

как избавиться от повторений? )
...
Рейтинг: 0 / 0
запрос из двух таблиц
    #32975816
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. пост Помогите организовать сортировку

Вообще в данной ситуации можно обойтись одной таблицей:

id | title | id_parent

где id_parent будет указывать на родителя (группу) данного товара.
...
Рейтинг: 0 / 0
запрос из двух таблиц
    #32975823
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. пост Помогите организовать сортировку

Вообще в данной ситуации можно обойтись одной таблицей:

id | title | id_parent

где id_parent будет указывать на родителя (группу) данного товара.
...
Рейтинг: 0 / 0
запрос из двух таблиц
    #32975866
extra-lights
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
из условия задачи:
товар может состоять в нескольких группах
...
Рейтинг: 0 / 0
запрос из двух таблиц
    #32975880
Doctor013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А никак, если сделать группировку по товарам, то тогда какой критерий отбора поля flag?
...
Рейтинг: 0 / 0
запрос из двух таблиц
    #32975913
Doctor013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, например, если брать максимальное значение флага:
Код: plaintext
SELECT a.id, a.title,max( b.flag) FROM items AS a, item_groups AS b where a.id = b.item_id group by a.id,a.title ORDER BY b.flag, a.title; 
...
Рейтинг: 0 / 0
запрос из двух таблиц
    #32977010
extra-lights
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение оказалось простое:
SELECT DISTINCT(a.id), a.title, b.flag FROM items AS a LEFT JOIN groups AS b ON a.id = b.item.id GROUP BY a.id ORDER BY b.flag, a.title
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос из двух таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]