Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Умножение столбцов одним запросом
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Умножение столбцов одним запросом

Страниц (1): [1]
 

1. lamozavrik - 03 Февраля, 2012 - 21:06:19 - перейти к сообщению
Привет знатоки MySQL! Передо мной стала такая вот задачка: Делаю интернет магазин, вся корзина построена на кукисах, в базу заносится уже готовый заказ. Заносится в таком виде:
Есть поля itmes_id, count где в itmes_id хранятся идентификаторы товаров в виде 1, 2, 3 и т.д., и в count хранится количество товаров в виде 2, 2, 4 и т.д., соответственно первая цифра относится к первому id, вторая ко второму и т.д. Так вот, как можно одним запросом умножить к примеру цену товара с таким id на количество, которое относится к этому товару?
Тоесть что бы вывести все товары мне нужно сделать запрос типа

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT title, price FROM goods WHERE id IN(1, 2, 3);



А вот как сделать, что бы сразу во время запроса количество умножалось на цену и выдавало мне сумму? Что то типа такого, но так естественно не работает, так, пишу для понимания:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT title, price, price*IN(2, 2, 4) AS sum FROM goods WHERE id IN(1, 2, 3);



или прийдется всё таки строку переводить в массив средствами PHP и в цикле делать выборку?
надеюсь смог объяснить )) Сори, если что не так ))
2. Саныч - 03 Февраля, 2012 - 21:10:56 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT title, price, (price * count) AS sum FROM goods WHERE id IN(1, 2, 3)

оно?
3. lamozavrik - 03 Февраля, 2012 - 21:13:50 - перейти к сообщению
Саныч, нет. В поле count количество лежит в виде строки: 2, 2, 4, а айди товаров в виде строки 1, 2, 3, так вот первая цифра count относится к первой цифре айди, вторая ко второй, третья к третьей и т.д
4. Саныч - 03 Февраля, 2012 - 21:31:03 - перейти к сообщению
Зачем такое извращенство? Не понял
5. lamozavrik - 03 Февраля, 2012 - 21:34:25 - перейти к сообщению
не знаю извращенство или нет, но никак не могу придумать, как оптималнее всего хранить заказы в БД
(Добавление)
Просто как мне показалось, что это нормально, что у тебя есть заказ, в этом заказе хранятся все айди товаров через запятую, которые заказали и количество этих товаров тоже через запятую. Вот как вывести все товары с этими айди, я знаю
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT title, price FROM goods WHERE id IN(1, 2, 3)

но вот как сделать, что бы цена товара с определенным айди умножалась на количество заказаного товара с этим же айди )))
6. Саныч - 03 Февраля, 2012 - 21:42:41 - перейти к сообщению
Я думаю правильно, соответсвенно и лучше будет так:
0) таблица товаров (id, название и т.д.)
1) таблица заказов (id, дата, кто заказал, статус и т.д.)
2) таблица товаров в заказе (id заказа, id товара, количество)
7. lamozavrik - 03 Февраля, 2012 - 21:46:10 - перейти к сообщению
Саныч, ну таблица товаров так и есть, а вот с заказами наверное всё таки сделаю на две таблицы. Спасибо )
(Добавление)
Хорошо, еще вопрос: Допустим клиент оформил заказ, я его записал в таблицу как id, дата, кто заказал, статус и т.д., а потом мне соответственно нужно добавить в таблицу товаров в заказе сами id заказа, id товара, количество. Так вот как мне узнать под каким id записался заказ в таблицу заказов, что бы потом записать этот id как id заказа в таблицу товаров в заказе?

Как всё запутано )))
8. Саныч - 03 Февраля, 2012 - 21:58:51 - перейти к сообщению
mysql_insert_id()
9. lamozavrik - 03 Февраля, 2012 - 22:03:44 - перейти к сообщению
Спасибо ))

 

Powered by ExBB FM 1.0 RC1