2 / 2 / 0
Регистрация: 21.10.2010
Сообщений: 24
1

Insert для обьединения двух таблиц в одну

05.06.2011, 10:43. Показов 6760. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как правильно написать запрос для того чтобы с двух таблиц БД и значений из Едитов данные вносились в третью таблицу!
Пробовал так
SQL
1
INSERT INTO givenbooks(sid,name,sname,phone,email,faculty,department,course,sgroup,bid,bname,autor,publishment,pubyear,ISBN,gdate,tdate)  SELECT sid,name,sname,phone,email,faculty,department,course,sgroup FROM students WHERE sid='"+fsid+"' UNION SELECT bid,bname,autor,publishment,pubyear,ISBN FROM books WHERE bid='"+fbid+"' UNION VALUES ('"+Edit9->Text+"','"+Edit10->Text+"';
но при вводе данных выдает ошибку(см. вложеный файл)
Заранее спасибо за ответы.
Миниатюры
Insert для обьединения двух таблиц в одну  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2011, 10:43
Ответы с готовыми решениями:

макрос для обьединения таблиц со всех листов одной книги в одну
как обьединить таблицы или все листы в одной книге в один лист

Пожалуйста поправьте. Пишу программу для обьединения двух строк в одну
int spacenum,spacealf,i=0; stringalf += " "; //2 строка stringnum += " "; //1 строка start...

INSERT данных из 3-х таблиц в одну
Добрый день, Существует 4 таблицы на MS SQL в 3-х из них информация практически не изменяется,...

Максимальное insert into в одну таблиц одновременно
Всем привет. у меня небольшой проект количества юзеров около 350. Что будет если они одновременно...

7
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
05.06.2011, 18:00 2
UNION объединяет "по вертикали", а Вам надо "по горизонтали".
SQL
1
2
3
4
5
6
INSERT INTO `givenbooks` (`sid`, `name`, `sname`, `phone`, `email`, `faculty`, `department`, `course`, `sgroup`, `bid`, `bname`, `autor`, `publishment`, `pubyear`, `ISBN`, `gdate`, `tdate`)
SELECT `s`.`sid`, `s`.`name`, `s`.`sname`, `s`.`phone`, `s`.`email`, `s`.`faculty`, `s`.`department`, `s`.`course`, `s`.`sgroup`,
    `b`.`bid`, `b`.`bname`, `b`.`autor`, `b`.`publishment`, `b`.`pubyear`, `b`.`ISBN`,
    '" + Edit9->Text + "', '" + Edit10->Text + "'
FROM `students` AS `s`, `books` AS `b`
WHERE `s`.`sid`= '" + fsid + "' AND `b`.`bid` = '" + fbid + "';
1
2 / 2 / 0
Регистрация: 21.10.2010
Сообщений: 24
06.06.2011, 16:37  [ТС] 3
Спасибо, но теперь при вводе данных выбивает ошибку.
Миниатюры
Insert для обьединения двух таблиц в одну  
0
2 / 2 / 0
Регистрация: 21.10.2010
Сообщений: 24
06.06.2011, 16:57  [ТС] 4
Кроме колонок описанных в Инсерте этого запроса в этой таблице есть еще и поле oid-первичный ключ, тип ансайнт инт, автоикрементный; судя по всему ошибка к нему относиться.
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
06.06.2011, 16:59 5
Zakharov, Извините, Вы читать умеете? Там написано, что количество переданных значений не совпадает с количеством заявленных полей.

Может я считать разучился, но я 4 раза пересчитал. 17 полей и 17 значений. Поскольку у Вас не предусмотрена защита от SQL-инъекций, такое может случиться только если пользователь введет в Edit значение вида foo', 'bar
1
2 / 2 / 0
Регистрация: 21.10.2010
Сообщений: 24
06.06.2011, 17:32  [ТС] 6
Спасибо. С ошибкой затупил, не отрицаю. Если выкинуть из запроса вставку значений с Текст Едитов то все замечательно работает. Но если оставить так как есть то выскакивает эта ошибка о несоответствии кол-ва переданных значений кол-ву полей даже если в Эдиты ничего не вводить хотя для полей gdate, tdate alow null стоит true. Но обычно вводиться инфа о дате типа 2011.06.06
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
06.06.2011, 18:19 7
Zakharov, А Вы выведете посмотреть строку с запросом, собранную с учатием edit'ов.
1
2 / 2 / 0
Регистрация: 21.10.2010
Сообщений: 24
06.06.2011, 19:02  [ТС] 8
вот так не работает
SQL
1
2
3
4
INSERT INTO givenbooks (sid,sname,name,phone,email,faculty,department,sgroup,
course,bid,bname,autor,publishment,pubyear,ISBN,gdate,tdate) SELECT s.sid,s.sname,s.name,s.phone,s.email,s.faculty,s.department,
s.sgroup,s.course,b.bid,b.bname,b.autor,b.publishment,b.pubyear,b.ISBN,
'" + Edit9->Text + "', '" + Edit10->Text + "' FROM students AS s, books AS b WHERE s.sid= '" + fsid + "' AND b.bid = '" + fbid + "';
ну а без вставки полей gdate,tdate, вот так работает
SQL
1
2
3
INSERT INTO givenbooks (sid,sname,name,phone,email,faculty,department,sgroup,course,bid,bname,autor,publishment,pubyear,ISBN) SELECT s.sid,s.sname,s.name,s.phone,s.email,s.faculty,s.department,s.sgroup,s.course,
b.bid,b.bname,b.autor,b.publishment,b.pubyear,b.ISBN FROM students AS s, books AS b 
WHERE s.sid= '" + fsid + "' AND b.bid = '" + fbid + "';
Добавлено через 12 минут
Vovan-VE, Огромное спасибо, все работает!
Оба запроса функционируют правильно, просто я дату не правильно вводил,
в базе она храниться в формате ГГГГ.ММ.ДД, а я вводил ГГГГ.ДД.ММ, и когда ДД>12 выскакивала
эта ошибка!
1
06.06.2011, 19:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2011, 19:02
Помогаю со студенческими работами здесь

Запрос insert из двух таблиц
Всем Добра! Такое дело... Подскажите как можно записать из двух таблиц в одну.. insert into...

Объединение двух таблиц в одну
2 таблицы с одинаковыми столбцами находится на аксес, я хочу объедит 2-ух таблицу, который видно...

Объединение двух таблиц в одну
Помогите, пожалуйста, объединить две таблицы в одну. На одном листе имеется таблица за 2012 год, на...

Добавить записи из двух таблиц в одну
Здравствуйте. У меня возникла проблема с написанием запроса на добавление записей из двух таблиц в...

Как сделать из двух таблиц одну?
Подскажите, пожалуйста как сделать из двух таблиц одну? Я в этом деле новичок, так что сильно не...

Сделать из двух таблиц одну (Excel)
Джентльмены! прошу вашей помощи (если я вообще в нужной теме, а то я не нашел...) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru