Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вставить в одно из полей таблицы, даннные из поля другой таблицы 
V
    Опции темы
dimaf1
Дата 2.9.2011, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 12.3.2009

Репутация: нет
Всего: нет



Имеется три таблицы:
1 - customers (id(первичный ключ), name, surname, phone); Таблица клиентов

2 - products (id(первичный ключ), model, price); Таблица товара

3 - orders (id (первичный ключ), date, customer_id(внешний ключ на поле id таблицы customers), product_id(внешний ключ на поле id таблицы customers), quantity(количество заказаных экземпляров товара), sum(общя сумма к оплате)); Таблица заказов

Так вот я хочу узнать как мне написать запрос MySQL на добавление записи в таблицу orders, чтобы в поле "sum" этой таблицы вставлялось значение поля "price" таблицы products у которого поле "id" соответствует полю "product_id" таблицы orders.

Т.е. запрос должен выглядеть следующим видом: 
INSERT INTO orders (date, customer_id, product_id, quantity, sum) VALUES (curdate(), 2, 4, 2, тут должно быть значение price из таблицы orders*quantity)

Извиняюсь  опечатался не:
INSERT INTO orders (date, customer_id, product_id, quantity, sum) VALUES (curdate(), 2, 4, 2, тут должно быть значение price из таблицы orders*quantity)
а:
INSERT INTO orders (date, customer_id, product_id, quantity, sum) VALUES (curdate(), 2, 4, 2, тут должно быть значение price из таблицы products*quantity)
сори

Надеюсь понятно объяснил и если что заранее прошу прощения так как только знакомлюсь с MySQL.

Это сообщение отредактировал(а) dimaf1 - 2.9.2011, 19:38
PM MAIL   Вверх
rodnover
Дата 2.9.2011, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: 2
Всего: 10



Вот так:

Код

INSERT INTO orders (date, customer_id, product_id, quantity, sum)
select curdate(), 2, 4, 2, тут должно быть значение price из таблицы orders*quantity
from ....
where ....


где select возвращает одну запись с требуемыми полями

Это сообщение отредактировал(а) rodnover - 2.9.2011, 18:50
PM MAIL   Вверх
dimaf1
Дата 3.9.2011, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 12.3.2009

Репутация: нет
Всего: нет



Цитата(rodnover @ 2.9.2011,  18:49)
Вот так:

Код

INSERT INTO orders (date, customer_id, product_id, quantity, sum)
select curdate(), 2, 4, 2, тут должно быть значение price из таблицы orders*quantity
from ....
where ....


где select возвращает одну запись с требуемыми полями

Спасибо, но так не получится, т.к. мне в запросе INSERT после того как я с помощью SELECT получу из таблицы products необходимое мне значение price, это значение в этом же запросе надо будет умножить на значение quantity таблицы orders, которое должно быть определенно до значения price и вне конструкции SELECT. 

Зато получилось немного по-другому: smile 

Код

INSERT INTO orders SET customer_id=$customer_id, product_id=$product_id, quantity=$quantity, sum=quantity*(SELECT price FROM products WHERE products.id=$product_id)

PM MAIL   Вверх
rodnover
Дата 3.9.2011, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: 2
Всего: 10



Код

INSERT INTO orders(customer_id, product_id, quantity, sum)
SELECT $customer_id, $product_id, $quantity, $quantity * products.price
FROM products 
WHERE products.id=$product_id


Вы же всё равно quantity из переменной берете. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.