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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из двух таблиц по минимальному значению, и GROUP BY 
:(
    Опции темы
olexdj
Дата 10.4.2013, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Драсьте.
Есть таблицы. 1 - Товары. 2 - Цены на товары от разных поставщиков, 1 товар может быть у разных поставщиков с разной ценой.

Задача выбирать товары определенного бренда из 1-й таблицы и 1 строку c наименьшей ценой из другой таблицы по каждой модели.
Все работало ок, пока не понадобилось брать из 2-й таблицы еще 1 параметр (типа спецпредложение на данный товар, да/нет). Так вот этот параметр уже берется совсем из другой записи, не с той там где меньшая цена указана ((

Например:

Код

Таблица 1. cat
id / model / brand

Таблица 2. price
id / cat_id / price / param


Выбираю так:

Код

select a.id, a.model, a.brand, min(b.price), b.param 
from cat a, price b
where a.id = b.cat_id and a.brand='SONY'
group by b.cat_id


Все четко выбирает, и цена минимальная, а параметр param совсем из другой строки, от другого поставщика ((( 
Как побороть?  smile

Добавлено @ 02:37
Без "group by b.cat_id" выбирает только 1 модель бренда с наименьшей ценой.

Без "group by b.cat_id" и без "min" выбирает все модели из 1й таблицы и все цены от разных поставщиков на каждый товар из 2-й таблицы, а нужно только 1 с наименьшей ценой.

Добавлено через 13 минут и 20 секунд
Пока нашел временный костыль, отмечаю параметр одинаковым у всех поставщиков на конкректную модель, но это не дело, надо побороть.

Это сообщение отредактировал(а) olexdj - 10.4.2013, 02:41
PM MAIL   Вверх
olexdj
Дата 10.4.2013, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Еще один нашел временный костыль - выбираю "max(b.param)", чтобы просто узнать, есть ли у этой модели спецпредложение, но оно не обязательно соответствует строке с min(b.price)
PM MAIL   Вверх
_zorn_
Дата 10.4.2013, 06:45 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код
select a.id, a.model, a.brand, b.price, b.param 
from cat a, price b
where a.id = b.cat_id and a.brand='SONY'
group by b.cat_id
ORDER BY b.price ASC


Это сообщение отредактировал(а) _zorn_ - 10.4.2013, 06:50
PM MAIL   Вверх
Akina
Дата 10.4.2013, 08:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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





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

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


Новичок



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

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



_zorn_, че-то выбирает "b.price" больший а не меньший (((   smile 


Akina, блин, эти джойны для меня темный лес, попробую разобраться.. smile 
PM MAIL   Вверх
_zorn_
Дата 19.4.2013, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(olexdj @ 11.4.2013,  00:51)
_zorn_, че-то выбирает "b.price" больший а не меньший (((   smile 

Ну значит
Код
ORDER BY b.price DESC

забыл ньюансы.

Это сообщение отредактировал(а) _zorn_ - 19.4.2013, 07:05
PM MAIL   Вверх
Akina
Дата 19.4.2013, 08:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



_zorn_, да неверен запрос, неверен. И если он даёт ВДРУГ верную выборку - это не навсегда. Завтра на этих же данных он вполне может дать ту же ошибку - 
Цитата(olexdj @  10.4.2013,  03:34 Найти цитируемый пост)
этот параметр уже берется совсем из другой записи, не с той там где меньшая цена указана 

Причём эти грабли явно описаны в документации. Правда, её никто и никогда не читает...


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

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


 




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


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

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