Можно ли создать и использовать «виртуальную» таблицу в запросе mysql? - PullRequest
1 голос
/ 31 июля 2011

У меня есть корзина для покупок, и элементы сохраняются в сессии как массивКлюч массива представляет идентификатор элемента, значение массива - количество элементов.array([1]=>1, [2]=>1);

Я хочу рассчитать общую стоимость.Можно ли сделать это с помощью одного запроса MySQL?

Например:

SELECT SUM(c.count * i.price) FROM (--virtual table--) c 
                                        LEFT JOIN item i ON i.id=c.id;

Ответы [ 3 ]

1 голос
/ 31 июля 2011

Насколько я понимаю, вы хотите это:

SELECT 1 AS product_id, 1 AS quantity
UNION ALL
SELECT 2, 1
UNION ALL
SELECT 3, 100
...

В любом случае, выполнение одного из следующих действий выглядит неловко:

  • Получение цен из базы данных
  • Храните тележки в базе данных

Таким образом, вы можете делать все свои расчеты в одном месте.

0 голосов
/ 31 июля 2011

Невозможно, поскольку данные находятся в сеансе (если вы не хотите записывать данные сеанса в БД) .
Могу ли я предложить этот подход

SELECT i.id, i.price 
FROM item i 
WHERE i.id in (array.keys)

при условии, что результат помещен в коллекцию,
пусть itemResult будет коллекция затем повторить

var total = 0
for(var item : itemResult)
  total += item.price * array[i.id]

total будет содержать сумму с использованием этого псевдокода

0 голосов
/ 31 июля 2011

Вы, вероятно, имеете в виду Просмотры или подзапросы - если это так, то вы правы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...