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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Умножение столбцов одним запросом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
lamozavrik
Отправлено: 03 Февраля, 2012 - 21:06:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Привет знатоки 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 и в цикле делать выборку?
надеюсь смог объяснить )) Сори, если что не так ))


-----
Ударим крепким сном по мукам совести!
 
 Top
Саныч
Отправлено: 03 Февраля, 2012 - 21:10:56
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




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

оно?


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
lamozavrik
Отправлено: 03 Февраля, 2012 - 21:13:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Саныч, нет. В поле count количество лежит в виде строки: 2, 2, 4, а айди товаров в виде строки 1, 2, 3, так вот первая цифра count относится к первой цифре айди, вторая ко второй, третья к третьей и т.д


-----
Ударим крепким сном по мукам совести!
 
 Top
Саныч
Отправлено: 03 Февраля, 2012 - 21:31:03
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




Зачем такое извращенство? Не понял


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
lamozavrik
Отправлено: 03 Февраля, 2012 - 21:34:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




не знаю извращенство или нет, но никак не могу придумать, как оптималнее всего хранить заказы в БД
(Добавление)
Просто как мне показалось, что это нормально, что у тебя есть заказ, в этом заказе хранятся все айди товаров через запятую, которые заказали и количество этих товаров тоже через запятую. Вот как вывести все товары с этими айди, я знаю
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT title, price FROM goods WHERE id IN(1, 2, 3)

но вот как сделать, что бы цена товара с определенным айди умножалась на количество заказаного товара с этим же айди )))


-----
Ударим крепким сном по мукам совести!
 
 Top
Саныч
Отправлено: 03 Февраля, 2012 - 21:42:41
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




Я думаю правильно, соответсвенно и лучше будет так:
0) таблица товаров (id, название и т.д.)
1) таблица заказов (id, дата, кто заказал, статус и т.д.)
2) таблица товаров в заказе (id заказа, id товара, количество)


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
lamozavrik
Отправлено: 03 Февраля, 2012 - 21:46:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Саныч, ну таблица товаров так и есть, а вот с заказами наверное всё таки сделаю на две таблицы. Спасибо )
(Добавление)
Хорошо, еще вопрос: Допустим клиент оформил заказ, я его записал в таблицу как id, дата, кто заказал, статус и т.д., а потом мне соответственно нужно добавить в таблицу товаров в заказе сами id заказа, id товара, количество. Так вот как мне узнать под каким id записался заказ в таблицу заказов, что бы потом записать этот id как id заказа в таблицу товаров в заказе?

Как всё запутано )))


-----
Ударим крепким сном по мукам совести!
 
 Top
Саныч
Отправлено: 03 Февраля, 2012 - 21:58:51
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)






-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
lamozavrik
Отправлено: 03 Февраля, 2012 - 22:03:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Спасибо ))


-----
Ударим крепким сном по мукам совести!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB