Blade
Новичок
Помогите правильно составить запрос
Предположим есть таблица в MySQL:
sklad_id, tovar_id, data, ostatok
В эту таблицу вносятся остатки только в том случае, если в конкретный день на конкретном складе по конкретному товару было движение.
Т.е. например остаток на "колбасу" на "первом складе" есть за 1 и 5 января, потому что за период с 2 по 4 колбасу на первый склад не привозили и не увозили, таким образом информация не дублируется.
И вот из это таблицы нужно получить остатки всех товаров по всем складам на определенное число. Т.е. нужно получить результат, сгруппированный по складу (skald_id) и товару (tovar_id) с максимальной датой (data), которая не больше, например 4 января (т.е. получить остаток на 4 января).
Я написал следующий запрос, ожидая получить ошибку:
SELECT max(data), sklad_id, tovar_id, ostatok
FROM ostatki_na_skladah
WHERE data<='2007-01-04'
GROUP BY sklad_id, tovar_id
...и он нормально отработал
Но насколько мне известно, в выбираемые поля запросов с группировками можно подставлять только те поля, по которым сделана группировка, статистические функции и константы. Вот и меня это и беспокоит. Мне может кто-то объяснить данный феномен или подсказать решение задачи без нарушений принципов построения запросов в реляционных БД?
Предположим есть таблица в MySQL:
sklad_id, tovar_id, data, ostatok
В эту таблицу вносятся остатки только в том случае, если в конкретный день на конкретном складе по конкретному товару было движение.
Т.е. например остаток на "колбасу" на "первом складе" есть за 1 и 5 января, потому что за период с 2 по 4 колбасу на первый склад не привозили и не увозили, таким образом информация не дублируется.
И вот из это таблицы нужно получить остатки всех товаров по всем складам на определенное число. Т.е. нужно получить результат, сгруппированный по складу (skald_id) и товару (tovar_id) с максимальной датой (data), которая не больше, например 4 января (т.е. получить остаток на 4 января).
Я написал следующий запрос, ожидая получить ошибку:
SELECT max(data), sklad_id, tovar_id, ostatok
FROM ostatki_na_skladah
WHERE data<='2007-01-04'
GROUP BY sklad_id, tovar_id
...и он нормально отработал
Но насколько мне известно, в выбираемые поля запросов с группировками можно подставлять только те поля, по которым сделана группировка, статистические функции и константы. Вот и меня это и беспокоит. Мне может кто-то объяснить данный феномен или подсказать решение задачи без нарушений принципов построения запросов в реляционных БД?