Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/20: Рейтинг темы: голосов - 20, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 18.04.2008
Сообщений: 16

Выбрать из первой таблицы атрибут записи, удовлетворяющей некому условию, и вставить его во вторую

19.04.2008, 21:44. Показов 4102. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста...Есть две таблицы, к примеру одна заполнена а вторая пуста. Необходимо выбрать из 1 таблицы атрибут записи,удовлетворяющей некому условию, и вставить его во вторую.
sql 2000

конкретный пример :
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
create table student(
    id_student    int    primary key identity(1,1),
    surname        varchar(20)    not null,
    number        int    REFERENCES groups(id_group)
    )
 
 
create table stud_lab(
    id_student    int    constraint id_stud references student(id_student),
    id_lab        int    constraint id_laba references lab(id_lab),
    constraint    id_sl    primary key(id_student,id_lab)
    )
выбираются студенты конкретной группы и их ID с ID_lab добавляется в другую табл.
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2008, 21:44
Ответы с готовыми решениями:

Склеить таблицы при этом выбрать все записи из первой
SELECT * FROM Main INNER JOIN USD ON Main.ID_D = USD.ID_D INNER JOIN C_Inf ON C_Inf.ID_C = Main.ID_C INNER JOIN Value ON...

Выбрать из основной таблицы записи, для которых подчиненные удовлетворяют условию
Уважаемые Гуру! Есть таблица пожаров fires , для каждой записи есть несколько подчиненных записей в таблице detail. В detail есть поле...

Вставить вторую строку в середину первой
Помогите, пожалуйста. Для строки, введенной с клавиатуры, решить поставленную задачу, алгоритм которой реализовать в виде отдельной...

7
Администратор
 Аватар для mik-a-el
87800 / 53121 / 249
Регистрация: 10.04.2006
Сообщений: 13,760
19.04.2008, 22:54
Code
1
2
3
4
5
6
7
8
INSERT INTO stud_lab (
     d_student,
     id_lab)
SELECT
     id_student,
     ID_lab /* Откуда это брать - не указано */
FROM
     student
0
0 / 0 / 0
Регистрация: 18.04.2008
Сообщений: 16
19.04.2008, 23:32  [ТС]
mik-a-el, спасибо конечно... но это не то - вставится только 1 запись... так я умею. поясню... мне надо ОДНИМ запросом сделать МНОГО вставок(для КАЖДОГО студента заданной группы)... ID_lab -внешний параметр... есть еще таблица с лабами...
0
Администратор
 Аватар для mik-a-el
87800 / 53121 / 249
Регистрация: 10.04.2006
Сообщений: 13,760
20.04.2008, 12:43
Цитата Сообщение от F@nt0m
mik-a-el, спасибо конечно... но это не то - вставится только 1 запись...
Нет, вставятся все записи из student.
Цитата Сообщение от F@nt0m
поясню... мне надо ОДНИМ запросом сделать МНОГО вставок(для КАЖДОГО студента заданной группы)... ID_lab -внешний параметр... есть еще таблица с лабами...
Тогда изложите задачу подробнее.
0
0 / 0 / 0
Регистрация: 18.04.2008
Сообщений: 16
20.04.2008, 22:43  [ТС]
---Нет, вставятся все записи из student.
я с самого начала точно такой же запрос написал... но если быть точным, то он даже 1 запись не вставит. оно и понятно-селект вернёт множество, и что именно вставить инсерту??? может я конечно и не прав...
Миниатюры
Выбрать из первой таблицы атрибут записи, удовлетворяющей некому условию, и вставить его во вторую  
0
0 / 0 / 0
Регистрация: 18.04.2008
Сообщений: 16
20.04.2008, 23:07  [ТС]
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
create table groups(
    id_group    int    primary key identity(1,1),
    number        varchar(7)    unique not null,
    )
 
create table student(
    id_student    int    primary key identity(1,1),
    surname        varchar(20)    not null,
    name_        varchar(20)    not null,
    lastname    varchar(20)    not null,
    number        int    REFERENCES groups(id_group)
    )
 
create table lab(
    id_lab        int    primary key identity(1,1),
    id_subject    int     references subject(id_subject),
    number        int    not null,
    discript    varchar(50)  default null,
    link        varchar(200) default null
    )
 
create table stud_lab(
    id_student    int    constraint id_stud references student(id_student),
    id_lab        int    constraint id_laba references lab(id_lab),
    constraint    id_sl    primary key(id_student,id_lab),
    mark        int     default null,
    open_key    varchar(256)    default null,
    secret_key    varchar(256)    default null,
    passdate    smalldatetime    default null
    )
вот структура БД.

теперь цель... Описывается кафедра института. Нужно назначить какую-то лабу каждому студенту конкретной группы.
(назначать лабу сразу всей группе не подходит- для каждого студента уникальные ключи и оценка). Считается не корректным заставлять препода группы делать, скажем, по 20 инсертов только на 1 лабу...а если лаб 10???:eek:

преподу надо сделать чтото вроде
exec add_lab_to_group id_group id_lab
и всё...

вот мне и нужно написать эту процедуру...
0
Администратор
 Аватар для mik-a-el
87800 / 53121 / 249
Регистрация: 10.04.2006
Сообщений: 13,760
21.04.2008, 11:39
Назначает все лабы всем студентам. Для конкретной лабы просто вставить ограничение.
Code
1
2
3
4
5
6
7
8
9
INSERT INTO stud_lab (
    id_student, 
    id_lab)
SELECT 
    id_student, 
    id_lab
FROM
    student
    LEFT JOIN lab ON lab.id_lab = lab.id_lab
Проверено на SQL Server 2005.
0
0 / 0 / 0
Регистрация: 18.04.2008
Сообщений: 16
21.04.2008, 20:21  [ТС]
Огромное спасибо, MIK-A-EL!!! то что нужно!
А можно еще в нескольких словах, какой именно смысл здесь несет left join? )
я правильно понимаю, что просто JOIN соединяет по одинаковым столбцам таблицы для однинаковых значений.
а LEFT или RIGHT JOIN для записей которым не нашлось пары-эту пару создаёт... и результат-некая временная таблица...
я сильно не прав? )

Добавлено через 1 час 33 минуты
Всё, я понял...я нашёл свою ошибку... mik-a-el, вы были правы ещё в первом посте...
у меня запрос не отработал из-за слова VALUES:huh: теперь мне всё ясно. Огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2008, 20:21
Помогаю со студенческими работами здесь

После пятого символа первой строки вставить вторую
Привет,помогите пожалуйста.У меня задание-есть две строки.Нужно после пятого символа первой строки,ввести вторую ,а после этого добавить...

Перенос строки из первой таблицы во вторую
Здраствуете мне нужно чтобы при нажатии на строку из таблицы 1 "Принтеры" в форму 2 в таблицу "Неисправные" переносилось два...

Перенести только отсутствующие данные из первой таблицы во вторую
Есть 2 таблицы: table1 Коля Курит Вася Пьет Петя ломает игршки Женя Хочет к маме ........

поиск строки, удовлетворяющей заданному условию.
задание лабораторной работы предполагает наличие ввода пользователем строк с клавиатуры в виде С-строк. Обработка произвольной строки...

Как перенести стоимости из первой таблицы во вторую соответственно артикулу.
Здравствуйте, господа компьютерные ковбойцы! нужна помощь в написании макроса для Эксель. Надеюсь на вас :drink: что имеем? ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru