Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос из двух таблиц / 7 сообщений из 7, страница 1 из 1
23.03.2005, 12:05
    #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
23.03.2005, 12:19
    #32975816
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос из двух таблиц
см. пост Помогите организовать сортировку

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

id | title | id_parent

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

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

id | title | id_parent

где id_parent будет указывать на родителя (группу) данного товара.
...
Рейтинг: 0 / 0
23.03.2005, 12:30
    #32975866
extra-lights
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос из двух таблиц
из условия задачи:
товар может состоять в нескольких группах
...
Рейтинг: 0 / 0
23.03.2005, 12:36
    #32975880
Doctor013
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос из двух таблиц
А никак, если сделать группировку по товарам, то тогда какой критерий отбора поля flag?
...
Рейтинг: 0 / 0
23.03.2005, 12:43
    #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
23.03.2005, 17:23
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос из двух таблиц / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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