Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > связывание таблиц


Автор: plotpam 2.2.2013, 11:11
 Есть три таблицы в базе. В одной логин и номер счета который я сам создаю, в другой результат запроса по этому номеру счета и сумма, в третьей логин и балланс пользователя. Надо сравнить номер счера в первой и второй таблице и соответственно логин первой и третей таблицы. И обновить поле баланс в третьей таблице (баланс + из поля сумма во второй таблице). Спасибо заранее!

Автор: skyboy 2.2.2013, 13:24
в UPDATE запросах тоже можно использовать JOIN'ы. http://www.electrictoolbox.com/article/mysql/cross-table-update/:
Код

UPDATE product p, productPrice pp
SET pp.price = pp.price * 0.8
WHERE p.productId = pp.productId
AND p.dateCreated < '2004-01-01'

ну, понятно, со своими именами полей, таблиц и логикой.
так что для начала напиши SELECT запрос, который выберет, что тебе нужно. а потом сделай из него запрос на обновление.

Автор: plotpam 2.2.2013, 14:25
Цитата(skyboy @ 2.2.2013,  13:24)
в UPDATE запросах тоже можно использовать JOIN'ы. http://www.electrictoolbox.com/article/mysql/cross-table-update/:
Код

UPDATE product p, productPrice pp
SET pp.price = pp.price * 0.8
WHERE p.productId = pp.productId
AND p.dateCreated < '2004-01-01'

ну, понятно, со своими именами полей, таблиц и логикой.
так что для начала напиши SELECT запрос, который выберет, что тебе нужно. а потом сделай из него запрос на обновление.

не понял ни чего. Мне надо так как я написал выше!

Автор: Akina 2.2.2013, 21:14
Цитата(plotpam @  2.2.2013,  12:11 Найти цитируемый пост)
Надо сравнить номер счера в первой и второй таблице и соответственно логин первой и третей таблицы.

Не сравнивать, а связывать.

Цитата(plotpam @  2.2.2013,  15:25 Найти цитируемый пост)
не понял ни чего.

Разбирайся. Никто за тебя это не будет делать.

Автор: plotpam 3.2.2013, 03:00
СПАСИБО  smile 

Автор: igorold 4.2.2013, 06:36
plotpam, здесь за тебя делать не принято.
Но найдут ошибку в твоем решении, если ты что-то сделал, а оно не работает.
Задача твоя простая - для студента. Вот и напиши, а если неправильно будет работать, будем смотреть.

Автор: plotpam 4.2.2013, 09:44
Цитата(igorold @ 4.2.2013,  06:36)
plotpam, здесь за тебя делать не принято.
Но найдут ошибку в твоем решении, если ты что-то сделал, а оно не работает.
Задача твоя простая - для студента. Вот и напиши, а если неправильно будет работать, будем смотреть.

 smile ,  smile 

Автор: Akina 4.2.2013, 09:49
http://forum.vingrad.ru/index.php?showtopic=361678&view=findpost&p=2545763

Автор: plotpam 4.2.2013, 13:37
Код

   CREATE TABLE IF NOT EXISTS `txn` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`login` varchar(32) NOT NULL,
`txn` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=100 ;

CREATE TABLE IF NOT EXISTS `otvet` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`txn` varchar(32) NOT NULL,
`status` varchar(50) NOT NULL,
`amount` float(9,2),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=100 ;


CREATE TABLE IF NOT EXISTS `user` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`login` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`balans` float(9,2),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=100 ;  

Автор: Akella 4.2.2013, 13:40

M
Akella
пользуйтесь кнопкой "Код"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)