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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возможно ли составить такой SQL запрос? 
:(
    Опции темы
BigTon
  Дата 6.6.2012, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!

Таблица tableA
f1    f2    f3    f4    f5
1    1    1    a    3
1    1    1    b    1
1    1    1    c    11
1    2    1    e    3
1    2    1    d    1
1    2    1    c    15


Запрос 1
SELECT *, MAX(`f5`) AS `f5` FROM `table` WHERE `f1` IN (1) AND `f2` IN (1, 2) AND `f3` IN (1) AND `f4` IN ('a', 'c') GROUP BY `f1`, `f2`, `f3`

Результат 1
f1    f2    f3    f4    f5
1    1    1    c    11
1    2    1    c    15


Запрос 2
SELECT *, MAX(`f5`) AS `f5` FROM `table` WHERE `f1` IN (1) AND `f2` IN (1, 2) AND `f3` IN (1) AND `f4` IN ('a', 'c') GROUP BY `f1`, `f2`, `f3`

Результат 2
f1    f2    f3    f4    f5
1    1    1    c    11


Запрос 3
?

Результат 3
f1    f2    f3    f4    f5
1    1    1    c    11
1    2    1    NULL    NULL


Вопрос: как нужно переформулировать запрос 2, чтобы получился результат 3?

Смысл в том, чтобы составить такой запрос, чтобы получить Результат 1 и 3.

Структура таблицы и данные:

CREATE TABLE IF NOT EXISTS `tableA` (
`f1` int(11) NOT NULL,
`f2` int(11) NOT NULL,
`f3` int(11) NOT NULL,
`f4` varchar(1) NOT NULL,
`f5` int(11) NOT NULL,
KEY `f1` (`f1`,`f2`,`f3`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `tableA` (`f1`, `f2`, `f3`, `f4`, `f5`) VALUES
(1, 1, 1, 'a', 3),
(1, 1, 1, 'b', 1),
(1, 1, 1, 'c', 11),
(1, 2, 1, 'e', 3),
(1, 2, 1, 'd', 1),
(1, 2, 1, 'c', 15);

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


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


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

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



Не вижу описания логики необходимого запроса.


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

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


Новичок



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

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



У меня 2 проблемы
- запрос 1 составлен не верно, на самом деле он не возвращает результат 1; и нужно как то переформулировать запрос чтобы получить строку с ф4 и ф5, где ф5 имеет максимальное значение при групировке.
- переформулировать запрос 1 так чтобы в случае если искомые ф1ф2ф3 есть, а ф4 нет, то вместо ф4 и ф5 фозвращались null
PM MAIL   Вверх
Akina
Дата 7.6.2012, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ещё раз повторю.

Сформулируй чистую и точную постановку задачи. Что из чего и (главное!) по какому принципу следует получить.


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

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


Чо?
****


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

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



Цитата(BigTon @  6.6.2012,  22:36 Найти цитируемый пост)
переформулировать запрос 1 так чтобы в случае если искомые ф1ф2ф3 есть, а ф4 нет, то вместо ф4 и ф5 фозвращались null 

Код

select f1,f2,f3
      ,max(case when f4 in ('a','c') then f5 end) as f5
  from table
 where f1 in (1)
   and f2 in (1,2)
   and f3 in (1)
 group by f1,f2,f3


Добавлено через 4 минуты и 28 секунд
Цитата(BigTon @  6.6.2012,  22:36 Найти цитируемый пост)
строку с ф4 и ф5, где ф5 имеет максимальное значение при групировке.

stff бабушкин метод

Это сообщение отредактировал(а) Zloxa - 7.6.2012, 09:30


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


 




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


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

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