powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с UPDATE
25 сообщений из 44, страница 1 из 2
помогите с UPDATE
    #33470590
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
Добрый день, помогите плз
есть БД из 5 таблиц.
нужно чтобы считалась сумма(amount)
поле сумма является произведением трех столбцов.
запрос вроед написал прально но ничего не происходит.подскажите плиз, в чем ошибка
UPDATE Orders,
Order_items,
Customers,
Computers,
Discont SET Orders.Amount = Computers.price * Order_items.quantity * ( 100 - Discont.Sale ) /100 WHERE (
Orders.OrderID = Order_items.OrderID
) AND (
Customers.CustomerID = Orders.CustomerID
) AND (
Computers.nomer = Order_items.nomer
) AND (
Customers.Status = Discont.Status
)
может вообще не правильно я написал.SOS
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470677
oldkeybo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуйте как-нибудь так
Код: plaintext
1.
2.
3.
4.
5.
6.
update Orders set Order.amount=Computers.price * Order_items.quantity * (  100  - Discont.Sale ) / 100  
FROM      Orders INNER JOIN
                Order_items ON Orders.OrderID =Order_items.OrderID INNER JOIN
                Customers ON Orders.CustomerID = Customers.CustomerID
INNER JOIN Computers ON Computers.nomer = Order_items.nomer
INNER JOIN Discont  ON Customers.Status = Discont.Status 
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470682
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
Ответ MySQL:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM Orders INNER JOIN
Order_items ON Orde

не сработало
не могу понять. где ошибка
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470697
oldkeybo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упрости запрос до двух таблиц.
Код: plaintext
1.
2.
3.
update Orders set Order.amount= Order_items.quantity 
FROM      Orders INNER JOIN
                Order_items ON Orders.OrderID =Order_items.OrderID 

Если получится - подставляй остальные по одной
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470699
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
не получилось. все равно ругается также как и в прошлый раз.ему не нравится FROM
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470717
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
Люди,ПОМОГИТЕ.
я в Инсте сижу.решается моя судьба на экзамене.
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470735
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда быстренько пиши дамп таблицы.
Можно не весь, конечно, с данными для примера.
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470741
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
create table customers
( customerid int unsigned not null auto_increment primary key,
name national char(30) not null,
class national char(20) not null,
adress national char(40) not null,
status national char(20) not null
);
create table orders
( orderid int unsigned not null auto_increment primary key,
customerid int unsigned not null,
amount float(8,2),
date date not null
);

create table computers
( nomer national char(20) not null primary key,
type national char(30),
type1 national char(30),
price float(6,2),
producer national char(60)
);

create table order_items
( orderid int unsigned not null,
nomer national char(20) not null,
quantity tinyint unsigned,

primary key (orderid, nomer)

);
create table discont
(
status national char(20) not null,
sale float(5,2)
);
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470746
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и данные модельные давай, как с пустыми таблицами-то работать?
Сам же говоришь, что срочно.
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470754
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
(Customers)
CustomerID (Идентификатор клиента) Name (ФИО) Class(юр. лицо/ физ. лицо) Adress (Адрес) Status (Статус)
1 Иванов И.И. Физ.лицо Рябиновая д.13. Ветеран ВОВ
2 ООО «Самсон» Юр.лицо Алабяна д.8 Оптовик
3 Сидорова С.С. Физ. лицо Пр-т. Мира д.67 Пост.клиент
4 Ooo”Рубикон” Юр. лицо Пионерская д.39 Оптовик
5 Карапетов Д.И. Физ. лицо Арбатская д.1 клиент

(Orders)
OrderID CustomerID Amount (Сумма) Date (Дата)
1 3 2005-05-05
2 1 2005-06-10
3 2 2005-07-01
4 5 2004-04-13
5 6 2005-01-18
(Computers)
Nomer Type Type1 Price Producer
77/19/00 Процессор Pentium 4 200 Intel
49/70/28 Мышь Mop-35 5 A-Tec
30/70/03 Принтер Z-42 100 Lexmark
67/76/55 CD-ROM CD1100A 43 Samsung
66/43/55 Видео карта Radeon 9700 76 ATI
09/54/57 Клавиатура AK-70 34 Logitech

(Order_itmes)
OrderID Nomer Quantity(Кол-во)
1 77/19/00 1
2 49/70/28 6
3 30/70/03 3
4 67/76/55 3
5 66/43/55 5

(Discont)
Status Sale
Клиент 1%
Ветеран ВОВ 5%
Оптовик 10%
Постоянный клиент 5%
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470760
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
а должна считаться сумма amount
Orders.Amount = Computers.price * Order_items.quantity * ( 100 - Discont.Sale ) /100
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470763
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлично.
Я пока займусь подготовкой к внесению этих данных в базу, а вы получайте свой неуд.
Неужели сложно догадаться, что данные нужны в виде конкретных запросов к базе?
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470764
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
я извиняюсь. уже очень туго соображаю.с утра сдаю.и вот на этом запросе поплыл и сижу с ним часов с 3.
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470767
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дай нормальный дамп данных=то? чтоб я не кавычки экранировал, а над запросом думал.
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470777
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
use computershop;

insert into customers values
(NULL, "Клюев Александр","физ.лицо", "Менделеева 111", "Ветеран"),
(NULL, "Краснопивцев Алексей","юр.лицо", "Центральная 2", "оптовик"),
(NULL, "Белозёров Олег","физ.лицо", "Кольцевая 35", "клиент"),


insert into orders values
(NULL, 3, , "2005-05-05"),
(NULL, 1, , "2005-06-10"),
(NULL, 2, , "2005-07-01"),


insert into Сomputers values
("74/331/72", "ОАО Pentium", "4", 34.99,""Intel),
("000208/01-2001", "Мышка", "USB", 24.99,"Atech"),
("000168/01-2000", "клавиатура", "А-70", 24.99,"Logitek"),


insert into order_items values
(1, "74/331/72", 2),
(2, "67/554/134", 1),
(3, "67/554/134", 5),


insert into discont values
("Ветеран", 5),
("клиент", 5),
("оптовик", 5),
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470803
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да работает ваш запрос нормально, если в соответствующем таблицам регистрах имена таблиц и полей писать.
Проверяйте данные.
Потому как сначала мне пришлось исправить инсерты для всех 5 таблиц, чтобы база их хотя бы всосала, потом поправить регистры названий, о которых я уже говорил, после чего проверить точность указания полей nomer в соотвествующих таблицах. И _ВСЁ_ЗАРАБОТАЛО_. Просто будьте аккуратнее.
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470806
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
спасибо.сейчас буду капаться где наляпил ошибок
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470807
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPDATE orders,
order_items,
customers,
computers,
discont SET orders.amount = computers.price * order_items.quantity * ( 100 - discont.sale ) /100 WHERE (
orders.orderid = order_items.orderid
AND (
customers.customerid = orders.customerid
) AND (
computers.nomer = order_items.nomer
) AND (
customers.status = discont.status
);


--
-- Структура таблицы `computers`
--

CREATE TABLE `computers` (
`nomer` char(20) NOT NULL default '',
`type` char(30) default NULL,
`type1` char(30) default NULL,
`price` float(6,2) default NULL,
`producer` char(60) default NULL,
PRIMARY KEY (`nomer`)
) TYPE=MyISAM;

--
-- Дамп данных таблицы `computers`
--

INSERT INTO `computers` VALUES ('74/331/72', 'ОАО Pentium', '4', 34.99, 'Intel'),
('000208/01-2001', 'Мышка', 'USB', 24.99, 'Atech'),
('000168/01-2000', 'клавиатура', 'А-70', 24.99, 'Logitek');

-- --------------------------------------------------------

--
-- Структура таблицы `customers`
--

CREATE TABLE `customers` (
`customerid` int(10) unsigned NOT NULL auto_increment,
`name` char(30) NOT NULL default '',
`class` char(20) NOT NULL default '',
`adress` char(40) NOT NULL default '',
`status` char(20) NOT NULL default '',
PRIMARY KEY (`customerid`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;

--
-- Дамп данных таблицы `customers`
--

INSERT INTO `customers` VALUES (1, 'Клюев Александр', 'физ.лицо', 'Менделеева 111', 'Ветеран'),
(2, 'Краснопивцев Алексей', 'юр.лицо', 'Центральная 2', 'оптовик'),
(3, 'Белозёров Олег', 'физ.лицо', 'Кольцевая 35', 'клиент'),

-- --------------------------------------------------------

--
-- Структура таблицы `discont`
--

CREATE TABLE `discont` (
`status` char(20) NOT NULL default '',
`sale` float(5,2) default NULL
) TYPE=MyISAM;

--
-- Дамп данных таблицы `discont`
--

INSERT INTO `discont` VALUES ('Ветеран', 5.00),
('клиент', 5.00),
('оптовик', 5.00);

-- --------------------------------------------------------

--
-- Структура таблицы `order_items`
--

CREATE TABLE `order_items` (
`orderid` int(10) unsigned NOT NULL default '0',
`nomer` char(20) NOT NULL default '',
`quantity` tinyint(3) unsigned default NULL,
PRIMARY KEY (`orderid`,`nomer`)
) TYPE=MyISAM;

--
-- Дамп данных таблицы `order_items`
--

INSERT INTO `order_items` VALUES (1, '74/331/72', 2),
(2, '000208/01-2001', 1),
(3, '000168/01-2000', 5);

-- --------------------------------------------------------

--
-- Структура таблицы `orders`
--

CREATE TABLE `orders` (
`orderid` int(10) unsigned NOT NULL auto_increment,
`customerid` int(10) unsigned NOT NULL default '0',
`amount` float(8,2) default NULL,
`date` date NOT NULL default '0000-00-00',
PRIMARY KEY (`orderid`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `orders`
--

INSERT INTO `orders` VALUES (1, 3, 66.48, '2005-05-05'),
(2, 1, 23.74, '2005-06-10'),
(3, 2, 118.70, '2005-07-01');
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470809
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
а какой из запросов кстати правильный то? первый или второй?
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470811
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
спасииииииииииибо большое!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470814
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот запрос, структура и данные, которые вместе работают.
Скорей всего, вам не до этих рекомендаций сейчас, но вообще обычно оправданно связывать таблицы через численные поля, а не строковые.
В данном случае, это означает, что вместо поля status в таблице customers следует использовать statusid, и иметь соответствующее поле в таблице discont, либо отдельную таблицу status. Примерно то же самое с полем nomer, которое по задумке и является числовым, но практически таковым не является. Нужен синтетический индекс в соотвествующей таблице.
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470818
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
сейчас постараюсь быстреньк о это все через пхп админ накидать. надеюсь сдам.
еще раз спасибо большое
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470891
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
Запрос как не работал так и не работает.точнее работает но ничего не делает


Затронутые ряды: 0 (Запрос занял 0.0071 сек)
SQL-запрос:
UPDATE orders,
order_items,
customers,
computers,
discont SET orders.amount = computers.price * order_items.quantity * ( 100 - discont.sale ) /100 WHERE (
orders.orderid = order_items.orderid
) AND (
customers.customerid = orders.customerid
) AND (
computers.nomer = order_items.nomer
) AND (
customers.status = discont.status
)
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470895
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы советовал проверить значения, забитые в nomer в обеих таблицах.
При первом запуске запроса он у меня отработал только для одной записи в заказах, т.к. для остальных соответствующих товаров не нашлось.
...
Рейтинг: 0 / 0
помогите с UPDATE
    #33470896
Pe4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pe4
Гость
Но вы когда делали дамп таблицы orders заплоняли поле amount хотя оно должно быть пустое и выщитываться?!
или я не так понял?!
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / помогите с UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]