Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» SQL запрос

Автор: chel78
Дата сообщения: 09.10.2010 20:50

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


например ?
Автор: chel78
Дата сообщения: 17.10.2010 17:19

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

Секунды я получил, а вот как теперь в HH24:MI:SS получить ???
Автор: greenpc
Дата сообщения: 18.10.2010 08:19
chel78
Вам же уже дали ответ на ваш вопрос
salexn1
http://forum.ru-board.com/topic.cgi?forum=33&topic=7776&start=160#16
Автор: Vedus
Дата сообщения: 30.10.2010 17:10
День добрый.
Мне надо как-то выполнить хитрый Insert. Хитрость в том, что в процессе задействованы 3 таблицы.
Требуеться добавить данный в первые две таблиы, а зытем в третью добавить ключи, которые были получены в результате добавления данных в первые две таблицы.
Используеться SQLite через c#.

Пример: добавить data1 в table1 (-> id1)
добавить data2 в table2 (-> id2)
добавить id1, id2 в table3

Спасибо.
Автор: dneprcomp
Дата сообщения: 30.10.2010 21:04
Vedus
Поля ID в table1 и table2 добавляются автоматоматически(сами собой)?

Если база подерживает, то можно ипользовать @@IDENTITY

Если нет, то исполнив
Код: select max(IDxxx) from tableXXX
Автор: greenpc
Дата сообщения: 01.11.2010 08:47
Vedus
через
_http://www.sqlite.org/lang_corefunc.html#last_insert_rowid


Добавлено:
dneprcomp
если использовать @@IDENTITY
то нельзя делать вставку записи в тригере
Автор: dneprcomp
Дата сообщения: 01.11.2010 16:27
greenpc
О тригере не было сказано ни слова.
Да и использовать тригер таких условиях я бы не стал. Insert в две разные таблицы. Значит будет 2 тригера. А что делать, если Insert по какой-либо причине не сработает в table2 ? Откат танзакции после первого тригера уже не сделать.
Но получать значения ID-s можно и через last_insert_rowid. Вы правы.
Автор: KillaJ
Дата сообщения: 29.11.2010 14:14
Добрый день!Подскажите пож-та с запросом!

У меня есть 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
Автор: dneprcomp
Дата сообщения: 29.11.2010 21:02
KillaJ
Добавлялись в какую таблицу?
Что значит "И чтобы эти строки шли в паре"?
Автор: dtuyghfdt
Дата сообщения: 29.11.2010 23:17
Ребята,помогите плиз...
усть две таблицы
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)!!!
Автор: dneprcomp
Дата сообщения: 30.11.2010 03:30
dtuyghfdt
select name, sum(nagr) from Prep inner join Lect on Prep.prep_id = Lect.prep_id grouped by name having term = 3
Автор: KillaJ
Дата сообщения: 30.11.2010 17:16

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


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


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


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

dneprcomp подскажите как это сделать.
Автор: AndVGri
Дата сообщения: 01.12.2010 01:42
KillaJ
Select Orders.*, Holdings.*
From Orders Left Join Holdings On Orders.Security = Holdings.holdingSecDisplayName
Автор: dneprcomp
Дата сообщения: 01.12.2010 02:02
KillaJ
Попрежнему непонятно что же надо получить. Все-таки надо применять общепринятую терминологию. Или хотя бы объяснять поподробнее что чем называем.
Если под таблицей понимается table, то, похоже, что требуется что-то вроде:
1.Если table еще не создан
Код:
SELECT holdingSecDisplayName, holdingQty, holdingPrice
INTO [имя нового table]
FROM Holdings inner join Orders on Orders.Security = Holdings.holdingSecDisplayName
Автор: dtuyghfdt
Дата сообщения: 14.12.2010 00:02
Найти и вывести список ФИО читателей, удовлетворяющих условию:
каждый из них за определенный временной период (параметр заказа) заказал на абонемент все книги заданного автора (параметр запроса).


Помогите пожалуйста!!

Заранее спасибо!

Добавлено:
ТАБЛИЦА 3_1. ЧИТАТЕЛИ
•    Номер читательского билета
•    ФИО
•    Место работы
•    Код должности
•    Телефон
•    Адрес
•    Дата окончания действия читательского билета

ТАБЛИЦА 3_2. КHИГИ
•    Номер книги
•    Автор
•    Название
•    Год издания
•    Цена
•    Общее число заказов на книгу (Связать триггером с таблицей Заказы)
•    Издательство

ТАБЛИЦА 3_3. ЗАКАЗЫ
•    Номер книги
•    Номер читателя
•    Куда (читальный зал N, абонемент)
•    Дата заказа
Автор: AndVGri
Дата сообщения: 14.12.2010 05:56
dtuyghfdt
Для Access будет так, для других может нужно убрать As
[more]
Select [ТАБЛИЦА 3_1. ЧИТАТЕЛИ].[ФИО]
From ([ТАБЛИЦА 3_1. ЧИТАТЕЛИ]
Where [ТАБЛИЦА 3_1. ЧИТАТЕЛИ].[Номер читательского билета] In
(Select [RelABR].[Номер читательского билета]
From
(Select [ТАБЛИЦА 3_2. КHИГИ].[Автор],
Count([ТАБЛИЦА 3_2. КHИГИ].[Номер книги] As AllBook
From [ТАБЛИЦА 3_2. КHИГИ]
Group By [ТАБЛИЦА 3_2. КHИГИ].[Автор]) As RelAB
Inner Join
(Select [ТАБЛИЦА 3_1. ЧИТАТЕЛИ].[Номер читательского билета],
[ТАБЛИЦА 3_2. КHИГИ].[Автор],
Count([ТАБЛИЦА 3_2. КHИГИ].[Номер книги]) As AllBook
From ([ТАБЛИЦА 3_1. ЧИТАТЕЛИ] Inner Join [ТАБЛИЦА 3_3. ЗАКАЗЫ]
On [ТАБЛИЦА 3_1. ЧИТАТЕЛИ].[Номер читательского билета] =
[ТАБЛИЦА 3_3. ЗАКАЗЫ].[Номер читателя])
Inner Join [ТАБЛИЦА 3_2. КHИГИ]
On [ТАБЛИЦА 3_3. ЗАКАЗЫ].[Номер книги] =
[ТАБЛИЦА 3_2. КHИГИ].[Номер книги]
Where ([ТАБЛИЦА 3_2. КHИГИ].[Автор] = "ФИО нужного автора")
And ([ТАБЛИЦА 3_3. ЗАКАЗЫ].[Куда] = "абонемент")
And ([ТАБЛИЦА 3_3. ЗАКАЗЫ].[Дата заказа] Between #12/01/2000# And #12/01/2010#)
Group By [ТАБЛИЦА 3_1. ЧИТАТЕЛИ].[Номер читательского билета],
[ТАБЛИЦА 3_2. КHИГИ].[Автор]) As RelABR
On ([RelAB].[Автор] = [RelABR].[Автор]) And
([RelAB].[AllBook] = [RelABR].[AllBook]))
[/more]
Автор: dtuyghfdt
Дата сообщения: 14.12.2010 11:55
AndVGri
Нет, нужен для delphi..ну ниче,попробуем))
Автор: dtuyghfdt
Дата сообщения: 15.12.2010 21:56
Таблица 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. В скобках указаны названия полей в моей базе данных...



Запрос
    Найти и вывести список студентов, прослушавших все курсы, которые читаются некоторым преподавателем (параметр запроса)



помогите плиз...
Автор: isem
Дата сообщения: 15.12.2010 23:52
Вроде так, если я не ошибаюсь. Проверь на практике.

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 = Фамилия преподавателя
Автор: dtuyghfdt
Дата сообщения: 16.12.2010 18:26

Цитата:
isem

А как реализовывается в этом запросе слово ВСЕ?мне препод сказал что этот запрос надо как то через реаляционную алгебру делать,типа здесь есть квантор всеобщности....
Автор: isem
Дата сообщения: 17.12.2010 00:22
Квантор всеобщности - это общие поля в таблицах, по которым идет join
поскольку везде используется inner join (прямое соединение таблиц), то в результат попадут только те записи, которые имеют общие поля в разных таблицах. Если хотя бы одно поле не совпадает, то такая запись в результат не выведется.

Советую также почитать реляционную алгебру перед визитом к преподу. мож там че умного написано )
Автор: DaImeR
Дата сообщения: 17.12.2010 20:26
Доброго времени суток. Не могли бы помочь с простым запросом
Связка Delphi+MS Access
Имеется форма поиска по наименованиям организаций, после которой выполняется код

Код:
begin
form1.DBGridMain.Visible:=True;
form1.DBGridZaezd.Visible:=False;
if findwindow.ShowModal=mrOK then begin
datamodule2.ADOQueryFind.Active:=False;
DataModule2.ADOQueryFind.Parameters.ParamByName('firmname').Value:=findwindow.FindEdit.Text;
datamodule2.ADOQueryFind.Active:=True;
searchform.ShowModal; end;
end;
Автор: KillaJ
Дата сообщения: 17.12.2010 21:29
Добрый вечер!Я хочю добавить в этот запрос, чтобы если Holdings.holdingAccountNumber совпадает с Orders.Security as Инструмент, то тогда выводить второй запрос.Так же, непонятно если убираю строки Счет из обоих Select, то выдает ошибку.Подскажите пож-та!!!


Код: Select Orders.SentTime as Время_Выставления
, Orders.Security as Инструмент
, sidewinder.dbo.fGetAccountNumberFromBrokerReference(Comment) as Счет
    , Orders.Qty as Количество
    , Orders.Tradeside as Операция
    , Orders.Price as Цена
    , Orders.Value as Сумма
    , Orders.Status as Статус
    
    From [Buffer].[dbo].Orders
where '171'= sidewinder.dbo.fGetAccountNumberFromBrokerReference(Comment)

Union
Select Holdings.holdingPurchaseDate as Время_Выставления
    , Holdings.holdingSecDisplayName as Инструмент
, Holdings.holdingAccountNumber as Счет
    , Holdings.holdingQty as Количество
    , 'Наличие' as Операция
    , Holdings.holdingPrice as Цена
    , Holdings.holdingValue as Сумма
    , 'Портфель' as Статус
    
From [sidewinder].[dbo].Holdings
where '171'= Holdings.holdingAccountNumber


Order By Счет, Инструмент, Цена
Автор: dtuyghfdt
Дата сообщения: 17.12.2010 22:22
isem

Цитата:
inner join predm on predm.predm_id = lect.predm_id

почему еще надо пробегать по предметам?до сих пор не понимаю..
Автор: dtuyghfdt
Дата сообщения: 19.12.2010 18:18
isem
запрос не работает так нужно(((
Автор: AndVGri
Дата сообщения: 20.12.2010 05:07
dtuyghfdt
Запрос же аналогичен запросу про книги, авторов и читателей (запрос в SQL синтаксисе Access)

Код:
Select STUD.* From STUD
Where STUD.STUD_ID In
(Select SInfo.STUD_ID
Form
(Select PREP.PREP_ID, Count(LECT.PREDM_ID) As PCount
From PREP Inner Join LECT On (PREP.PREP_ID = LECT.PREP_ID)
Where PREP.NAME In ('FirstName', 'SecondName', 'LastName')
Group By PREP.PREP_ID) As PInfo
Inner Join
(Select STUD.STUD_ID, LECT.PREP_ID, Count(LECT.PREDM_ID) As SCount
From (STUD Inner Join GRP (On STUD.GRP_ID = GRP.GRP_ID))
Inner Join LECT (On LECT.GRP_ID = GRP.GRP_ID)
Group By STUD.STUD_ID, LECT.PREP_ID) As SInfo
Where (PInfo.PREP_ID = SInfo.PREP_ID) And (PInfo.PCount = SInfo.SCount))
Автор: greenpc
Дата сообщения: 21.12.2010 10:53
DaImeR

Код: SELECT * FROM main where UCase(nameorg) like UCase('*:firmname*')
Автор: yarrr
Дата сообщения: 22.12.2010 17:13
Прошу помощи:
есть 3 табл.:
1.
id | имя | фамилия
2.
idA| id |что то еще
3.
idB| id


нужна выборка поля id из 3 батл кроме тех что встречаются в табл 2 и отсортированны по табл 1.фамилия

уже который час не могу сотворить...

Пытаюсь сделать так

user.id - new_entry.user_id - club_user.user_id - это и есть id из моего первого примера.

SELECT * FROM new_entry, club_user, user WHERE (new_entry.user_id!='' AND new_entry.user_id!=user.id AND new_entry.id_sorevnovaniy= '131') AND club_user.club_id="13" AND user.id=club_user.user_id order by user.last_name

но в результате записи дублируются
Автор: volser
Дата сообщения: 22.12.2010 18:29
yarrr
Какая СУБД?

выбрать айди
с таблицы1
где айди существует в таблице3
и айди не существует в таблице2
отсортитовать фамилия
Автор: yarrr
Дата сообщения: 22.12.2010 18:38
volser MySqL
да я так вроде и делаю
но что то не получается

Страницы: 1234567891011121314

Предыдущая тема: Строковый параметр в REG_BINARY


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.