|
Никак не получается написать запрос
|
|||
---|---|---|---|
#18+
Добрый день! Есть база данных, состоящая из трех таблиц: Записи, Отделы, Должности. Во вложении файл - Схема. Данные в основном вносятся в таблицу Записи. В две остальные вносятся только изменения построчно с указанием текущей даты изменения. Например, в таблице Должности вместо Васи стал Петя, и помимо строки (1, Вася, Ведущий специалист, Начальник, 01.05.2016) появилась еще одна строка (1, Петя , Ведущий специалист, Начальник, 14.11.2016 ). Как написать SQL-скрипт, чтобы он подтягивал все данные из таблицы Записи, и эти записи джойнил с таблицами Отделы и Должности по столбцам Первичный ключ, и главное, чтобы скрипт подтягивал данные из этих двух таблиц по самой близкой дате к дате из таблицы Записи? Вот пока только так получается: SELECT Записи.* , Должности.Главный_специалист , Должности.Ведущий_специалист , Должности.Начальник , Отделы.Филиал FROM Отделы INNER JOIN (Должности INNER JOIN Записи ON Должности.Первичный_ключ = Записи.Первичный_ключ) ON (Отделы.Первичный_ключ = Записи.Первичный_ключ) AND (Отделы.Первичный_ключ = Должности.Первичный_ключ); Кто-нибудь примерно понял что-нибудь?:) Я не айтишник, не судите строго. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2016, 16:39 |
|
Никак не получается написать запрос
|
|||
---|---|---|---|
#18+
test_d1чтобы скрипт подтягивал данные из этих двух таблиц по самой близкой дате к дате из таблицы Записи?Сформулируйте этот момент более точно. test_d1Во вложении файл - Схема.Странненькая какая-то схема... test_d1Например, в таблице Должности вместо Васи стал Петя, и помимо строки (1, Вася, Ведущий специалист, Начальник, 01.05.2016) появилась еще одна строка (1, Петя , Ведущий специалист, Начальник, 14.11.2016 ).И как Вы собираетесь полю Первичный ключ (ключевому, между прочим) дать одинаковые значения, равные единице? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2016, 16:53 |
|
Никак не получается написать запрос
|
|||
---|---|---|---|
#18+
Akinatest_d1чтобы скрипт подтягивал данные из этих двух таблиц по самой близкой дате к дате из таблицы Записи?Сформулируйте этот момент более точно. Нужно, чтобы к данным из таблицы Записи привязывались только те данные из таблиц Должности и Отделы, которые соответствовали бы дате из таблицы Записи. Т.е. не брались старые строки из этих двух таблиц (Должности и Отделы), а брались данные на даты, которые указаны в каждой строке разные из таблицы Записи:) Попробую логику объяснить - (select max(Отделы.Дата) from Отделы where Отделы.Дата<=Записи.Дата_внесения), и так для каждой строки. Akinatest_d1Во вложении файл - Схема.Странненькая какая-то схема... Согласен, кривая. А почему? Мне для образовательных целей. Akinatest_d1Например, в таблице Должности вместо Васи стал Петя, и помимо строки (1, Вася, Ведущий специалист, Начальник, 01.05.2016) появилась еще одна строка (1, Петя , Ведущий специалист, Начальник, 14.11.2016 ).И как Вы собираетесь полю Первичный ключ (ключевому, между прочим) дать одинаковые значения, равные единице? Тут я просто сделал это поле первичным ключом, чтобы запрос через конструктор запросов сделать:) Так в таблицах Должности и Отделы поле "Первичный_ключ" - не индексируемый:) Единственный ключ есть у таблицы Записи - это поле Первичный_ключ_2. Косо, криво, лишь бы живо:) Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2016, 17:25 |
|
Никак не получается написать запрос
|
|||
---|---|---|---|
#18+
2112Отделы - Справочник (ну, типа - Сущность) Должности - Справочник он тож..)) в Справочниках - не нужны Даты по крайней мере на Вашем Уровне ... сорри Уровень - это уже что-то:) Я просто хотел, чтобы было удобней заполнять. Ладно, сделаю по-другому. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2016, 19:59 |
|
|
start [/forum/topic.php?fid=45&msg=39347095&tid=1612987]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
9ms |
others: | 395ms |
total: | 510ms |
0 / 0 |