SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.05.2011 00:38:40

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Выбрать 2 строки с разными значениями

Люди хелп нужна помощь или совет. Пишу движок виртуальной биржи акций. Есть таблица заявок, назовем ее demands
нужно одним запросом или JOIN (так как двумя я умею сам) выбрать из нее 2 строки по критерию минимальная цена для заявки на продажу и максимальная цена для заявки на покупку, другими словами выбрать наилучшую заявку на покупку и на продажу. Не знаю сколько думал но в один запрос это не смог уложить, а хотелось бы. Код таблицы:


CREATE TABLE `demands` (
    `id` MEDIUMINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
    `symbol` TINYINT(3) UNSIGNED NOT NULL,
    `type` ENUM('Покупка','Продажа') NOT NULL,
    `price` DECIMAL(5,2) UNSIGNED NOT NULL,
    `amount` SMALLINT(5) UNSIGNED NOT NULL,
    `date` DATETIME NOT NULL,
    `user` SMALLINT(5) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`),
    INDEX `type` (`type`, `symbol`, `price`),
    INDEX `user` (`user`)
)
COLLATE='cp1251_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=4;
 

Отредактированно simple (13.05.2011 00:39:58)

Неактивен

 

#2 13.05.2011 00:45:15

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Выбрать 2 строки с разными значениями

Можно объединить с помощью JOIN по symbol два таких запроса, один для продажи, другой для покупки.

Неактивен

 

#3 15.05.2011 19:23:19

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Выбрать 2 строки с разными значениями

Может вам надо это:

SELECT (SELECT MAX(price) FROM demands WHERE type=1) 'Покупка',
(SELECT MAX(price) FROM demands WHERE type=0) 'Продажа'

Неактивен

 

#4 15.05.2011 23:07:17

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: Выбрать 2 строки с разными значениями

evgeny, спасибо большое, кажется то что нужно smile посмотрел этот запрос в explaine, первый запрос выдает следующее. Поле select_type:primary, остальные поля имеют значение null,поле extra содержит no tables used. Остальные 2 запроса получаются супербыстрами, благодоря составному индексу на три столбца,extra  содержит select tables optimized away.У меня вопрос по первому запросу, что это может означать, так для будущего, а за запрос спасибо еще раз, выручил конкретно.

Неактивен

 

#5 16.05.2011 11:07:11

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Выбрать 2 строки с разными значениями

simple написал:

evgeny, спасибо большое, кажется то что нужно smile посмотрел этот запрос в explaine, первый запрос выдает следующее. Поле select_type:primary, остальные поля имеют значение null,поле extra содержит no tables used. Остальные 2 запроса получаются супербыстрами, благодоря составному индексу на три столбца,extra  содержит select tables optimized away.У меня вопрос по первому запросу, что это может означать, так для будущего, а за запрос спасибо еще раз, выручил конкретно.

Первая строка EXPLAIN-а это описания общего, внешнего SELECT-а. То есть она не несёт никакого значения.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson