Помогите с запросом

BRat

o_0
Помогите с запросом

Есть две таблицы, таблица акций, и таблица стоимости акций
в таблице стоимости акций хранятся данные вида
"id акции" "дата" "стоимость"

Стоит задача получить стоимости акций в дату закрытия реестра, т.е. для одной акции запрос выглядит так -
SELECT date, price FROM share_day_prices WHERE share_id=x AND date <= 'дата закрытия' ORDER BY date DESC LIMIT 1

Акций 200 штук, и не хочется делать на каждую из них такой запрос. Как можно исхитрится одним запросом это сделать?

У самого было два варианта, один с подзапросом, второй - выгребание всех строк из таблицы стоимости с отсеканием ненужного в php. Этот вариант не катит, т.к. записей 200 тысяч
 

Glazyrin Sergey

Новичок
Дата закрытия реестра для каждой акции разное ?

-~{}~ 25.01.09 02:08:

Как дата закрытия реестра получается ?
После даты закрытия реестра для каждой акции будут ли еще какие то данные для акции старше чем дата закрытия реестра ?
 

BRat

o_0
дата для каждой акции разная, берется она из 3ей таблицы (сорри что не привел). Вот она
year, parent(id акции), reestr (тут дата закрытия реестра)

Year известен, т.е. связь с акцией 1 к 1

будут, данные пополняются ежедневно, а реестр закрывается раз в год
 

x-yuri

Новичок
может тебе такой запрос поможет... не совсем то, что тебе нужно, но...
[sql]SELECT s.share_id, MAX(p.date)
FROM shares s
JOIN share_day_prices p USING(share_id)
WHERE p.date <= s.reestr
GROUP BY s.share_id[/sql]
или может можно с MAX(p.price_id)
 

BRat

o_0
Да, над такой группировкой я тоже думал. Но как вытащить то, что мне на самом деле нужно - цену акцию ?

Хотя MAX(price_id) .. сейчас попробую
 

Gas

может по одной?
BRat
делай подзапросом, тут это хороший вариант
 

DiMA

php.spb.ru
Команда форума
че, пример из дока не прочитать? причем, пример не с абстрактными "У Маши было три яблока", а с теми же колонками типа price и продажи товара .-)
http://www.mysql.ru/docs/man/example-Maximum-column-group-row.html
 

Magz

Новичок
Такое ощущение, что пример писался на какой-то совсем древней версии MySQL - сейчас MySQL спокойно переварит ту запись, которая стоит в примере, как "ANSI SQL". Собственно, так и надо делать. При правильных индексах тормозить не будет.
 

BRat

o_0
Gas
Magz
Благодарю, сделал при помощи подзапроса. Работает на самом деле шустро
 
Сверху