Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 31 32 33 34 35 36 37 38 39 40 41 42 43

Открыть новую тему     Написать ответ в эту тему

dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korol26
 
Я бы добавил в table 1 поле N_filiala.
Потом делал бы INSERT, что бы синхронизировать tables по полю N_Mater. Т.о., если в table 1 добавлен N_Mater, он добавится и в table 2. Если названия  не менются и не добавляются, то Insert можно не делать.
Но поле добавить обязательно.

Код:
INSERT INTO  [table 2]  (N_filiala, N_Mater)
SELECT N_filiala, N_Mater  
FROM [table 1] LEFT OUTER JOIN [table 2] on [table 1].N_filiala = [table 2].N_filiala  
                and [table 1].N_Mater = [table 2].N_Mater
WHERE [table 2].N_Mater Is Null

Затем UPDATE

Код:
UPDATE [table 2] SET [table 2].Kolichestvo = [table 1].Kolichestvo
FROM [table 1] INNER JOIN [table 2] on [table 1].N_filiala = [table 2].N_filiala  
                and [table 1].N_Mater = [table 2].N_Mater

Но если есть возможность полностью очистить table 2, то тогда можно обойтись только простым INSERT с каждого филиала. Поле N_filiala можно тогда не добавлять в table 1, a менять вручную для каждого INSERT

Код:
INSERT INTO  [table 2]  (N_filiala, N_Mater, Kolichestvo)
SELECT 123, N_Mater, Kolichestvo FROM [table 1]  


Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:59 04-10-2010 | Исправлено: dneprcomp, 00:17 05-10-2010
chel78



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
chel78
Напишите функцию которая на вход принимает две даты и возвращает строку. Разница двух дат есть дробное число. Целая часть количество дней. Дробная часть часы, минуты, секунды.
Количество секунд = дробная часть * 24 * 60 * 60. Зная количество секунд можно получить результат в нужном формате.

 
например ?

Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 21:50 09-10-2010
chel78



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
chel78
Напишите функцию которая на вход принимает две даты и возвращает строку. Разница двух дат есть дробное число. Целая часть количество дней. Дробная часть часы, минуты, секунды.
Количество секунд = дробная часть * 24 * 60 * 60. Зная количество секунд можно получить результат в нужном формате.  

Секунды я получил, а вот как теперь в  HH24:MI:SS получить ???

Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 18:19 17-10-2010
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
chel78
Вам же уже дали ответ на ваш вопрос
salexn1
http://forum.ru-board.com/topic.cgi?forum=33&topic=7776&start=160#16

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 09:19 18-10-2010
Vedus



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
День добрый.
Мне надо как-то выполнить хитрый Insert. Хитрость в том, что в процессе задействованы 3 таблицы.
Требуеться добавить данный в первые две таблиы, а зытем в третью добавить ключи, которые были получены в результате добавления данных в первые две таблицы.
Используеться SQLite через c#.
 
Пример: добавить data1 в table1 (-> id1)
добавить data2 в table2 (-> id2)
добавить id1, id2 в table3
 
Спасибо.

Всего записей: 44 | Зарегистр. 21-03-2006 | Отправлено: 18:10 30-10-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vedus
Поля ID в table1 и table2 добавляются автоматоматически(сами собой)?
 
Если база подерживает, то можно ипользовать @@IDENTITY  
 
Если нет, то исполнив
Код:
select max(IDxxx) from tableXXX

В общем виде алгоритм следующий:
1.Получаем ID с помощью @@IDENTITY или select после каждого insert и помещаем результат в переменные
2.Добавляем в table3 значения переменных

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:04 30-10-2010 | Исправлено: dneprcomp, 22:05 30-10-2010
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vedus
через
_http://www.sqlite.org/lang_corefunc.html#last_insert_rowid
 
 
Добавлено:
dneprcomp
если использовать @@IDENTITY  
то нельзя делать вставку записи в тригере

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 08:47 01-11-2010 | Исправлено: greenpc, 08:51 01-11-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenpc
О тригере не было сказано ни слова.  
Да и использовать тригер  таких условиях я бы не стал. Insert в две разные таблицы. Значит будет 2 тригера. А что делать, если Insert по какой-либо причине не сработает в table2 ? Откат танзакции после первого тригера уже не сделать.
Но получать значения ID-s можно и через last_insert_rowid.  Вы правы.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 16:27 01-11-2010
KillaJ

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!Подскажите пож-та с запросом!
 
У меня есть 2 таблицы.
Первая "Orders" в которой поля: ActivationTime, Security,Qty, TradeSide,Price, Value, Status, KilledTime;  
 
2ая таблица "Holdings" в кот. поля: holdingSecDisplayName, holdingQty, holdingPrice.
 
Формирую таблицу следующим запросом:
 

Код:
Select ActivationTime, Security,Qty, TradeSide,Price, Value, Status, KilledTime
From Orders
Order By KilledTime, Status,Value,Price,TradeSide,Qty,Security,ActivationTime

 
Подскажите как сделать такой запрос, чтобы если поле Orders.Security = полю Holdings.holdingSecDisplayName то в таблицу бы добавлялась строка с полями таблицы Holdings.И чтобы эти строки шли в паре.

Всего записей: 14 | Зарегистр. 01-10-2010 | Отправлено: 15:14 29-11-2010 | Исправлено: KillaJ, 15:17 29-11-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KillaJ
Добавлялись в какую таблицу?
Что значит "И чтобы эти строки шли в паре"?

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:02 29-11-2010
dtuyghfdt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята,помогите плиз...
усть две таблицы  
Prep( prep_id, name, faq,nagr,pkaf)
и  
Lect (lect_id, prep_id, grp_id, predm_id, term, auditorium, time_)
 
нужен sql-запрос:
Для каждого преподавателя вывести фамилию преподавателя(prep.name) и общую нагрузку(prep.nagr) в 3 семестре(lect.term=3)!!!

Всего записей: 32 | Зарегистр. 08-10-2008 | Отправлено: 00:17 30-11-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dtuyghfdt
select name, sum(nagr) from Prep inner join Lect on Prep.prep_id = Lect.prep_id grouped by name having term = 3

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 04:30 30-11-2010 | Исправлено: dneprcomp, 04:31 30-11-2010
KillaJ

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Добавлялись в какую таблицу?  

 
В таблицу которая будет формироваться запросом.
 

Цитата:
Что значит "И чтобы эти строки шли в паре"?

 
Здесь можно просто поставить групировку по Security.
 
dneprcomp подскажите как это сделать.

Всего записей: 14 | Зарегистр. 01-10-2010 | Отправлено: 18:16 30-11-2010
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KillaJ
Select Orders.*, Holdings.*
From Orders Left Join Holdings On Orders.Security = Holdings.holdingSecDisplayName

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 02:42 01-12-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KillaJ
Попрежнему непонятно что же надо получить. Все-таки надо применять общепринятую терминологию. Или хотя бы объяснять поподробнее что чем называем.
Если под таблицей понимается table, то, похоже, что требуется что-то вроде:  
1.Если table еще не создан
Код:
 
SELECT holdingSecDisplayName, holdingQty, holdingPrice  
INTO [имя нового table]
FROM Holdings inner join Orders on Orders.Security = Holdings.holdingSecDisplayName  

2.Если table уже существует .
   Kоличество и очереднось полей SELECT-a должно совпадать со структурой существующего table
Код:
 INSERT INTO [table name] SELECT holdingSecDisplayName, holdingQty, holdingPrice  FROM Holdings inner join Orders on Orders.Security = Holdings.holdingSecDisplayName  

Если же таблица это recordset, то тогда просто
Код:
SELECT holdingSecDisplayName, holdingQty, holdingPrice  FROM Holdings inner join Orders on Orders.Security = Holdings.holdingSecDisplayName  

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 03:02 01-12-2010 | Исправлено: dneprcomp, 02:47 14-12-2010
dtuyghfdt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Найти и вывести список ФИО читателей, удовлетворяющих условию:  
          каждый из них за определенный временной период (параметр заказа) заказал на абонемент все книги заданного автора (параметр запроса).
 
 
Помогите пожалуйста!!
 
Заранее спасибо!
 
Добавлено:
ТАБЛИЦА  3_1. ЧИТАТЕЛИ
•    Номер читательского билета
•    ФИО
•    Место работы
•    Код должности
•    Телефон
•    Адрес
•    Дата окончания действия читательского билета
 
ТАБЛИЦА  3_2. КHИГИ
•    Номер книги
•    Автор
•    Название
•    Год издания
•    Цена
•    Общее число заказов на книгу  (Связать триггером с таблицей Заказы)
•    Издательство
 
ТАБЛИЦА  3_3. ЗАКАЗЫ
•    Номер книги
•    Номер читателя
•    Куда (читальный зал N, абонемент)
•    Дата заказа

Всего записей: 32 | Зарегистр. 08-10-2008 | Отправлено: 01:02 14-12-2010
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dtuyghfdt
Для Access будет так, для других может нужно убрать As
Подробнее...

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 06:56 14-12-2010
dtuyghfdt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AndVGri
Нет, нужен для delphi..ну ниче,попробуем))

Всего записей: 32 | Зарегистр. 08-10-2008 | Отправлено: 12:55 14-12-2010
dtuyghfdt

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Таблица 5_1. СТУДЕHТЫ (объединенные в гpуппы)  (STUD)
    •    Код студента (STUD_ID)
    •    Фамилия студента (NAME)
    •    Пол (SEX)  
    •    Код группы (GRP_ID)
    •    Место рождения (ADRES)
     
    Таблица 5_2.ПРЕПОДАВАТЕЛИ (PREP)
     •    Код преподавателя (PREP_ID)
     •    Фамилия преподавателя (NAME)
     •    Факультет (FAQ)
     •    Общая реальная нагрузка преподавателя(NAGR)
     •    Кафедра (PKAF)
 
    Таблица 5_3. ПРЕДМЕТЫ (PREDM)
    •    Код предмета   (PREDM_ID)
    •    Наименование предмета (NAME)
    •    Вид отчетности (зачет, экзамен, курсовая) (OTCH)
    •    тип занятия (лекция или практика) (TYPP)
    •    Количество часов (HOURS)
     
    Таблица 5_4. РАСПИСАНИЕ (LECT)
     •    Код преподавателя (PREP_ID)
     •    Код группы (GRP_ID)
     •    Код предмета (PREDM_ID)
     •    Семестр (TERM)
     •    Аудитория (AUDITORIUM)
     •    Время  (TIME_)  
     
    ФАЙЛ5_5. ГРУППЫ (GRP)
     •    Код группы (GRP_ID)
     •    Номер группы (NUM)
     •    Число студентов в группе (STUD_COUNT)
     •    Староста (HEAD)
 
P.S.  В скобках указаны названия полей в моей базе данных...  
 
 
 
Запрос
    Найти и вывести список студентов, прослушавших все курсы, которые читаются  некоторым преподавателем (параметр запроса)
 
 
 
помогите плиз...

Всего записей: 32 | Зарегистр. 08-10-2008 | Отправлено: 22:56 15-12-2010
isem



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вроде так, если я не ошибаюсь. Проверь на практике.
 
select stud.name, grp.num, predm.name, prep.name
from stud  
inner join grp on grp.grp_id = stud.grp_id
inner join lect on lect.grp_id = grp.grp_id
inner join prep on prep.prep_id = lect.prep_id
inner join predm on predm.predm_id = lect.predm_id
where prep.name = Фамилия преподавателя

Всего записей: 81 | Зарегистр. 22-07-2005 | Отправлено: 00:52 16-12-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 31 32 33 34 35 36 37 38 39 40 41 42 43

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru