|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Всем привет, никак не могу освоить запрос через несколько таблиц с джоинами... ужас какой-то... Самолеты ----------- samoletid markasamoletid Марка ------- markasamoletid markasamoletname Пилоты -------- pilotid pilotname Вылеты --------- samoletid pilotid vuletid vuletdate Нужно найти id вылета(vuletid), совершенного пилотом (pilotname) например, Василий на самолете марки, например, Боинг." Найти, когда каждый pilotid совершил свой первый вылет и последний вылет и на каком самолете Подскажите, пожалуйста, как это сделать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2018, 18:31 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6, Так как ни каких наработок нет, то исходим из того что мат часть не учим. для начала постройте широкую таблицу ((начаиная с Вылетов соединенные с Пилотами) соединенные с Самолетами) соединенный с Маркой Затем используя предложение Where отберите с нужным условием. С поиском первых и последних записей немного сложнее ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2018, 19:26 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Мат часть смотрел) Второй день) Код: sql 1.
Как к этой строке подсоединиться еще через пару таблиц... не знаю Думаю, но никак не додумаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 09:25 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6 , начните с более простого варианта. Просто сначала перечисляем используемые таблицы, а потом условия соответствия записей в них. Типа Код: sql 1. 2. 3. 4. 5. 6.
Так получите все поля всех таблиц (с кучей дублирований, конечно). Теперь начинайте, видя этот массив и понимая, что надо выбрать, добавлять дополнительные условия отборов. Типа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Каждый раз, добавляя очередное условие, проверяйте, соответствует ли результат тому, что ожидалось, не осталось ли что-то, что очередное условие должно было убрать, не убралось ли то, что должно было остаться... Именно это имелось в виду, когда были сказаны фразы Swa111для начала постройте широкую таблицу ((начиная с Вылетов соединенные с Пилотами) соединенные с Самолетами) соединенный с Маркой Затем используя предложение Where отберите с нужным условием. Как превратить всё это в джойн-синтаксис - это другой вопрос. Но он возникнет именно потом, когда с конвертацией простейшей логики в запрос с картезианским объединением перестанет представлять проблему. \ ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 09:43 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6, А Вы уверены,что схема БД разработана верно? Лично у меня сомнения по поводу таблиц "самолеты" и "марки"-каково их назначение и какие данные в них хранятся? При правильно спроектированной базе (с установлением связей) создание запроса,хоть из десятка таблиц, в конструкторе не вызывает ни малейших сложностей ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 11:16 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
sdkuanton6, А Вы уверены,что схема БД разработана верно? Лично у меня сомнения по поводу таблиц "самолеты" и "марки"-каково их назначение и какие данные в них хранятся? При правильно спроектированной базе (с установлением связей) создание запроса,хоть из десятка таблиц, в конструкторе не вызывает ни малейших сложностей да все нормально там со схемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 11:23 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Вдогонку:и вообще обычно работают с экипажами,которые состоят из нескольких человек и как исключение экипажи бывают сборными,но это надо предусматривать.+далеко не каждый пилот может летать на конкретной марке самолета. Короче:если Вы создаете что-то серьезное учитывайте все возможные нюансы,а если же хотите узнать про объединения читайте HELP-там все написано (вряд-ли в рамках форума Вам это объяснят лучше чем вдумчиво прочесть) Если хотите изложите задачу,стоящую перед Вами, и выложите свои наработки ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 11:29 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
sdkuВдогонку:и вообще обычно работают с экипажами,которые состоят из нескольких человек и как исключение экипажи бывают сборными,но это надо предусматривать.+далеко не каждый пилот может летать на конкретной марке самолета. Короче:если Вы создаете что-то серьезное учитывайте все возможные нюансы,а если же хотите узнать про объединения читайте HELP-там все написано (вряд-ли в рамках форума Вам это объяснят лучше чем вдумчиво прочесть) Если хотите изложите задачу,стоящую перед Вами, и выложите свои наработки дык парень для люфтганзы разрабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 11:33 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Так, что - то получилось, не подсказывайте) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 12:13 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
посмотрите:(для определения первого и последнего вылета в тбл."вылеты" должно быть поле с данными о дате и времени вылета) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 12:27 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Все...все перегуглил... нашел синтаксис для vba через одну таблицу запрос сделал, через две никак... Подскажите, пожалуйста, где неточности Это работает sb = "SELECT [Pilots$].PilotID, [Samoletlist$].samoletId, [Samolets$].SamoletsId, [Samolets$].SamoletmarkaId " _ & "FROM ([Pilots$]" _ & "inner JOIN [Samoletlist$] ON [Pilots$].PilotID = [Samoletlist$].PilotID)" _ & "inner JOIN [Samolets$] ON [Samoletlist$].samoletId = [Samolets$].SamoletsId" _ & "Where Name like 'Вася'" А это уже нет... sb = "SELECT [Pilots$].PilotID, [Samoletlist$].samoletId, [Samolets$].SamoletsId, [Samolets$].SamoletmarkaId, [SamoletMarka$].SamoletMarkaName " _ & "FROM ([Pilots$]" _ & "inner JOIN [Samoletlist$] ON [Pilots$].PilotID = [Samoletlist$].PilotID)" _ & "inner JOIN [Samolets$] ON [Samoletlist$].samoletId = [Samolets$].SamoletsId" _ '& "inner JOIN [SamoletMarka$] ON [Samolets$].SamoletmarkaId= [SamoletMarka$].SamoletmarkaId " _ & "Where Name like 'Вася'" И так и так скобки ставил... не получается... прошу помочь ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 13:51 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Все...все перегуглил... нашел синтаксис для vba через одну таблицу запрос сделал, через две никак... Подскажите, пожалуйста, где неточности Это работает Код: sql 1. 2. 3. 4. 5.
А это уже нет... Код: sql 1. 2. 3. 4. 5. 6.
И так и так скобки ставил... не получается... прошу помочь ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 13:51 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6, скобок не хватает () ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 13:54 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
sb = "SELECT [Pilots$].PilotID, [Samoletlist$].samoletId, [Samolets$].SamoletsId, [Samolets$].SamoletmarkaId, [SamoletMarka$].SamoletMarkaName " _ & "FROM (([Pilots$]" _ & "inner JOIN [Samoletlist$] ON [Pilots$].PilotID = [Samoletlist$].PilotID)" _ & "inner JOIN [Samolets$] ON [Samoletlist$].samoletId = [Samolets$].SamoletsId)" _ '& "inner JOIN [SamoletMarka$] ON [Samolets$].SamoletmarkaId= [SamoletMarka$].SamoletmarkaId " _ & "Where Name like 'Вася'" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 13:54 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6, у вас ошибка синтаксиса в первую очередь попробуйте так. без строк продолжения(не забывайте пробел в начале под-строки) Код: vbnet 1. 2. 3. 4. 5. 6. 7.
хотя я не уверена, что вы правильно прописали inner JOIN ,т.к. явно не хватает скобок ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 14:01 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Скобки пробовал, но все равно что-то идет не так Сложный синтаксис... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 14:12 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6, выложите пример базы --не создавать же пример за вас(всеж 4 таблицы) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 14:18 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
а пока на примере SDQU КодВпилотмаркатипдата вылетадата прилета1КоляАН-24турбовинтовой01.12.201802.12.20182ВасяА-320турбореактивный02.12.201803.12.20183ПетяXian МА-700турбовинтовой05.12.201806.12.20184АнтонА-320турбореактивный04.12.201806.12.2018 авторНужно найти id вылета(vuletid), совершенного пилотом (pilotname) например, Василий на самолете марки, например, Боинг." Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
получим ответ=2 сравните скобки вашего примера и этого ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 14:33 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6И так и так скобки ставил... не получается... прошу помочь Вот заморочился то.... Я через конструктор делаю, он сам все скобки как надо расставляет... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 14:37 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6, добавила записей КодВпилотмаркатипдата вылетадата прилета1КоляАН-24турбовинтовой01.12.201802.12.20182ВасяА-320турбореактивный02.12.201803.12.20183ПетяXian МА-700турбовинтовой05.12.201806.12.20184АнтонА-320турбореактивный04.12.201806.12.20185КоляАН-24турбовинтовой01.11.201802.12.20186ВасяА-320турбореактивный02.11.201803.12.20187ПетяXian МА-700турбовинтовой05.11.201806.12.20188АнтонА-320турбореактивный04.11.201806.12.20189КоляАН-24турбовинтовой01.10.201802.12.201810ВасяА-320турбореактивный02.10.201803.12.201811ПетяXian МА-700турбовинтовой05.10.201806.12.201812АнтонА-320турбореактивный04.10.201806.12.2018 авторНайти, когда каждый pilotid совершил свой первый вылет и последний вылет и на каком самолете зап2 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
пилотMin-дата вылетаMax-дата вылетаАнтон04.10.201804.12.2018Вася02.10.201802.12.2018Коля01.10.201801.12.2018Петя05.10.201805.12.2018 зап3 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
КодВпилотмарка.маркатипдата вылетадата прилета12АнтонА-320турбореактивный04.10.201806.12.20184АнтонА-320турбореактивный04.12.201806.12.201810ВасяА-320турбореактивный02.10.201803.12.20182ВасяА-320турбореактивный02.12.201803.12.20189КоляАН-24турбовинтовой01.10.201802.12.20181КоляАН-24турбовинтовой01.12.201802.12.201811ПетяXian МА-700турбовинтовой05.10.201806.12.20183ПетяXian МА-700турбовинтовой05.12.201806.12.2018 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 14:57 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Serg197311anton6И так и так скобки ставил... не получается... прошу помочь Вот заморочился то.... Я через конструктор делаю, он сам все скобки как надо расставляет... я тоже запрос делаю через конструктор, а уже потом разбиваю на подстроки для переноса в код причем, всегда без строк продолжение. но с пробелом перед очередной подстрокой Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 15:01 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАanton6, выложите пример базы Вас же просят. Ванговать же не все умеют ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 15:33 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА всегда без строк продолжение. но с пробелом перед очередной подстрокой И я, именно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 15:51 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6Все...все перегуглил... нашел синтаксис для vba через одну таблицу запрос сделал, через две никак... Подскажите, пожалуйста, где неточности Это работает Код: sql 1. 2. 3. 4. 5.
А это уже нет... Код: sql 1. 2. 3. 4. 5. 6.
И так и так скобки ставил... не получается... прошу помочь Скорее поверю, что работает второй запрос, а первый нет. В первом нет пробела перед WHERE. Код: vbnet 1. 2. 3. 4. 5.
В конце второй и третьей строки пробелы тоже бы не помешали, хотя их отсутствие и компенсируется другими разделителями - ] и ). И еще. Name like 'Вася' смысла не имеет, тогда уж Name = 'Вася'. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 16:01 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Все.... написал...час назад... Дело было в пробеле... Всем спасибо, но эта задачи заставила меня сдаться)) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 20:22 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Нет, у Вас не сработало бы... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 20:23 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
'& "FROM ((([Pilots$]" _ '& "inner JOIN [samoletList$] ON [Pilots$].PilotID = [samoletList$].PilotID)" _ '& "inner JOIN [samolets$] ON [samoletList$].samoletId = [samolets$].SamoletId) left JOIN [samoletmarka$] ON [samolets$].SamoletsmarkaId = [samoletmarka$].SamoletsmarkaId ) " _ '& " Where Name1 like 'Вася%' and samoletmarkaname like 'boing'" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 20:28 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
sb = "SELECT [samoletList$].samoletListid " _ '& "FROM ((([Pilots$]" _ '& "inner JOIN [samoletList$] ON [Pilots$].PilotID = [samoletList$].PilotID)" _ '& "inner JOIN [samolets$] ON [samoletList$].samoletId = [samolets$].SamoletId) left JOIN [samoletmarka$] ON [samolets$].SamoletsmarkaId = [samoletmarka$].SamoletsmarkaId ) " _ '& " Where Name1 like 'Вася%' and samoletmarkaname like 'boing'" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 20:29 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Пробел нужно было ставить в конце строки где select перед кавычками... Не знаю, как это хакнул... но такой нюансивный и привередливый синтаксис VBA меня почти убил...))) Я думал я что-то не то делаю... блин... Всем спасибо))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 20:32 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6Пробел нужно было ставить в конце строки где select перед кавычками... я всегда ставлю в начале --для наглядности ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 21:35 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
anton6, anton6Пробел нужно было ставить в конце строки где select перед кавычками... Что-то Вы нас путаете. В обоих запросах там пробелы стоят. Во втором запросе даже два пробела. Прислушайтесь все же к совету про Like. like 'boing' ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2018, 22:33 |
|
Запрос через несколько таблиц
|
|||
---|---|---|---|
#18+
Да, нет все сработало, попробуйте сами что-нибудь написать не обязательно этот пример копировать и запускать in Excel, Вы можете "накидать" какой-то свой и проверить, если не верите))и в первой строчке где select в конце перед кавычками " сначала уберать пробел - не сработает!!, а потом добавить... ) - сработает)! Я сам был сильно удивлен, выражаясь литературно, хотя уверен, что в ms server такой проблемы бы и не возникло... Еще вторая часть вопроса, с началом концом времени Нагуглил, но дописать не смог... 1 - Samolets ----------------------------------- SamoletsId | SamoletsMarkaId ----------------------------------- 1 |33 3 |33 4 |33 5 |33 6 |36 7 |37 8 |38 9 |34 10 |34 11 |35 12 |33 2 - SamoletsMarka ----------------------------- SamoletsMarkaId | SamoletsMarkaName ----------------------------- 33 | Боинг 34 | Боинг2 35 | Боинг3 36 | Боинг4 37 | Боинг5 38 | Боинг6 39 | Боинг7 39 | Боинг8 3 - Pilots ----------------------- PilotsID | Names ----------------------- 45 | Вася 46 | Петя 47 | Катя 48 | Ира 49 | Света 50 | Егор 51 | Марина 52 | Игнат 53 | Савелий 54 | Пушкин 55 | Путин 56 | Игор 4 - SamoletsList --------------------------------------------------------------------------- SamoletsListid | SamoletsId | PilotsID | SamoletsListDate --------------------------------------------------------------------------- 101 | 1 | 45 | 21.13.2009 13:13:35 102 | 2 | 46 | 21.13.2008 13:13:36 103 | 3 | 46 | 15.13.2008 13:13:34 104 | 4 | 45 | 16.13.2008 13:13:34 105 | 5 | 45 | 21.13.2008 13:13:36 106 | 6 | 50 | 18.13.2008 13:13:35 107 | 7 | 51 | 21.13.2008 13:13:36 108 | 8 | 52 | 20.13.2008 13:13:36 109 | 9 | 53 | 23.13.2008 13:13:35 110 | 10 | 53 | 23.13.2008 13:13:36 111 | 11 | 55 | 23.13.2008 13:13:37 112 | 12 | 53 | 24.13.2008 13:13:37 Код: sql 1. 2. 3. 4. 5.
Этот запрос работает и выводит id пилота и время вылета первое и второе!!! Но, я хочу сюда подсоединить еще и на каком самолете был произведен вылет... Если добавляю после select другие критерии - бейсик ругается, что они, типа, не участвуют в аггрегатной функции Подскажите, пожалуйста, как дописать этот запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 00:21 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1610946]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 213ms |
0 / 0 |