Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MySQL query

346
29 сентября 2005 года
Новая папка
256 / / 24.12.2004
Возник вопросик.
Допустим у мя есть две таблицы транзакции и товар_транзакция.
В транзакцию кидается полная сумма покупки.
Во вторую сохраняются номера транзакий и продуктов, которые были куплены через ту транзакцию.
Мне одним запросом нужно вытащить статистику о всех покупках. В неё входят: полная стоимость покупок, количество транзакций.

Примерно такой запрос
SELECT
COUNT(tr_pr.prod_id) as products,
COUNT(DISTINCT tr.trans_id) as transactions,
SUM(tr.Amount) as amount,
FROM TRANSACTIONS as tr, trans_prod as tr_pr
WHERE
tr.trans_id = tr_pr.trans_id

Так вот, если было по несколько товаров в одной транзакции, этот запрос прибовляет лишнюю сумму.
15
29 сентября 2005 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by Новая папка
Возник вопросик.
Допустим у мя есть две таблицы транзакции и товар_транзакция.
В транзакцию кидается полная сумма покупки.
Во вторую сохраняются номера транзакий и продуктов, которые были куплены через ту транзакцию.
Мне одним запросом нужно вытащить статистику о всех покупках. В неё входят: полная стоимость покупок, количество транзакций.

Примерно такой запрос
SELECT
COUNT(tr_pr.prod_id) as products,
COUNT(DISTINCT tr.trans_id) as transactions,
SUM(tr.Amount) as amount,
FROM TRANSACTIONS as tr, trans_prod as tr_pr
WHERE
tr.trans_id = tr_pr.trans_id

Так вот, если было по несколько товаров в одной транзакции, этот запрос прибовляет лишнюю сумму.


Тебя не затруднило бы привести структуру таблицы?

513
29 сентября 2005 года
Yurec
228 / / 21.09.2005
Не понятно что конкретно тебе надо, может быть это как-нибудь подойдёт?

Код:
create temporary table temptab
(
trans_id integer,
amount integer
)
SELECT
distinct tr.trans_id,tr.amount as my_amount
FROM transactions as tr, trans_prod as tr_pr
WHERE
tr.trans_id = tr_pr.trans_id;

SELECT
COUNT(tr_pr.prod_id) as products,
COUNT(DISTINCT tr.trans_id) as transactions,
(SELECT sum(tt.my_amount) as AMOUNT from temptab as tt) as amount
FROM TRANSACTIONS as tr, trans_prod as tr_pr
WHERE
tr.trans_id = tr_pr.trans_id



Скажете избыточность? ан нет... поспорю
346
29 сентября 2005 года
Новая папка
256 / / 24.12.2004
Цитата:
Originally posted by shaelf
Тебя не затруднило бы привести структуру таблицы?



Хм... Вообще-то нет, потому что это уже готовый функционирующий магазин. И мне к нему надо написать статистику.
Но если честно, я не понимаю, что в этой структуре не так. Вроде нормальная обычная реляционная структура.

15
29 сентября 2005 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by Новая папка
Хм... Вообще-то нет, потому что это уже готовый функционирующий магазин. И мне к нему надо написать статистику.
Но если честно, я не понимаю, что в этой структуре не так. Вроде нормальная обычная реляционная структура.


ну типа: табл. 1 столбец1 - то-то
столбец2 - то-то
табл. 2 столбец1 - то-то
столбец2 - то-то
и т.д. и т.п. Просто так легче понять:).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог