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

Выборка данных с объединением из 5 таблиц

25.09.2015, 10:54. Показов 2664. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите пожалуйста как правильно записать запрос для выборки данных, где есть условие объединения 5 таблиц?

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
            --факультет
 
            --Выбрать все записи факультета пользователя
            SELECT StatementID, StatementNumber, FlagMain, StudentID, DateCreate, 
            MarkValue, AcademHours, teacher1ID, teacher2ID, teacher3ID, WorkLPSubjectID 
            FROM 
            [Statement],WorkLPSubjects,BaseLearningPlan,SpecialtyInfo,FacultyInfo
            
            [Statement] JOIN WorkLPSubjects
            ON [Statement].WorkLPSubjectID = WorkLPSubjects.WorkLPSubjectID,
            
            WorkLPSubjects JOIN BaseLearningPlan 
            ON WorkLPSubjects.BaseLearningPlanID = BaseLearningPlan.SpecialtyID,
            
            BaseLearningPlan JOIN SpecialtyInfo 
            ON BaseLearningPlan.SpecialtyID = SpecialtyInfo.specialtyID,
            
            SpecialtyInfo JOIN FacultyInfo
            ON SpecialtyInfo.FacultyID = FacultyInfo.FacultyID
            = 
            --Сообщение 102, уровень 15, состояние 1, строка 16
            --Неправильный синтаксис около конструкции "=".
                        
            --где ID факультета пользователя =
            (SELECT FacultID FROM UsersBD WHERE UsersID = 20)
Миниатюры
Выборка данных с объединением из 5 таблиц  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2015, 10:54
Ответы с готовыми решениями:

Выборка данных из нескольких таблиц. Аналитическая выборка данных
16 Для каждого отдела выбрать отношение зарплаты и комиссионных сотрудников отдела к объему продаж отдела. 17 *Выбрать список штатов в...

Запрос с объединением данных из двух таблиц
Имеем таблицу ОСНОВНАЯ id|Наименование|Параметр 1|Арбуз|большой 2|Капуста|белокочанная 3|Салат|вкусный id - число, ...

Выборка данных из 2 таблиц
Есть 2 таблицы, например: Первая: | ID | col1 | col2 | col3 | col4 | Вторая: | ID | col_1 | col_2 | col_3 | col_4 | В первой и...

21
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
25.09.2015, 11:18
Demonikaliysis, синтаксис сами придумываете? Зачем? Почему бы не прочитать документацию?
В данном случае неправильно всё.
И ответить на ваш вопрос - это значит написать запрос вместо вас от начала до конца.

Медвежья услуга получится в этом случае, как мне кажется.
0
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
25.09.2015, 11:42  [ТС]
Да вроде бы не придумываю, а логически пишу как обычно синтаксис пишется для подобных запросов.
Я начинающий и скорее всего-где-то ошибся и даже скорее всего не раз. Вместо упрёков могли бы линком на адекватный источник для подобной проблемы поделиться, раз не хотите более точно указать проблему (из 2 таблиц всё выводится как надо, а из 5 уже не получается)

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

P.S. в "двух словах" о проблеме: (Нужно вывести список ведомостей (таблица Statement), для какого-то одного факультета пускай после равно будет 1, что и выполняется в подзапросе далее на скрине внизу). но весь трабл в том, что для этой таблицы ведомостей (Statement) обратится нужно к полю WorkLPSubjectID, которое лежит как PK в таблице WorkLPSubjects а в нём BaseLearningPlanID, который из таблицы BaseLearningPlan вызывается... ну и там так далее (сундук, утка, заяц....ничего не напоминает?)
Всё в запросе и скрине, поле таблицы в другой таблице и так с 5 таблицами чтобы добратся до нужного идентификатора факультета. Я не знаю как правильно всё это записать по синтаксису, а примеров что-то я не смог найти, вернее тех с которыми я смог бы разобраться.
Подскажите, может там предикат нужно использовать и другой вид JOIN-а или что-то делать иначе, не так как у меня раз не работает.
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
25.09.2015, 12:09
Цитата Сообщение от Demonikaliysis Посмотреть сообщение
Вместо упрёков могли бы линком на адекватный источник для подобной проблемы поделиться
https://msdn.microsoft.com/ru-... .120).aspx
1
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
25.09.2015, 12:16  [ТС]
Прочитаю. но там ведь общий синтаксис SELECT, мне нужно использовать JOIN, подскажите пожалуйста как примерно его записать ну пускай для 3 таблиц, я пока что-то вразумительного не нагуглил.

Прощу прощения за излишнюю прямоту, если вам мои слова показались слишком резкие. Я всегда говорю что думаю и бывает не думаю что говорю, вернее как это выглядит со стороны.
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
25.09.2015, 12:22
Цитата Сообщение от Demonikaliysis Посмотреть сообщение
но там ведь общий синтаксис SELECT, мне нужно использовать JOIN, подскажите пожалуйста как примерно его записать ну пускай для 3 таблиц
Откройте там ссылку на FROM
0
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
25.09.2015, 16:45  [ТС]
Может быть проблема в скобках? Во вложенных JOIN они вроде бы как должны быть, но куда их правильно поставить?

0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
25.09.2015, 17:54
Лучший ответ Сообщение было отмечено Demonikaliysis как решение

Решение

Цитата Сообщение от Demonikaliysis Посмотреть сообщение
Может быть проблема в скобках?
Проблема не в скобках. Проблемы вообще нет.
Какое-то из соединений дало пустой результат. Выяснить какое именно можно в актуальном плане выполнения, отследив после какого итератора Actual Numbers of Rows стало нулевым.
2
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
25.09.2015, 20:02  [ТС]
Цитата Сообщение от invm Посмотреть сообщение
отследив после какого итератора Actual Numbers of Rows стало нулевым
Как сделать такое можно, подскажите пожалуйста)
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
25.09.2015, 20:53
Лучший ответ Сообщение было отмечено Demonikaliysis как решение

Решение

Отображение действительного плана выполнения
1
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
26.09.2015, 15:44
invm, спасибо:-) А то я всюду LEFT JOIN леплю обычно... Про план ни разу не подумал...
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
26.09.2015, 16:36
cygapb-007, на здоровье
0
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
28.09.2015, 09:15  [ТС]
"Вместо тысячи слов" покажу скрин рабочего по плану но пустого на деле запроса
Миниатюры
Выборка данных с объединением из 5 таблиц  
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
28.09.2015, 09:18
Цитата Сообщение от Demonikaliysis Посмотреть сообщение
покажу скрин рабочего по плану но пустого на деле запроса
Предлагаете по картинке угадать, где соединение таблиц дало пустой набор?
0
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
28.09.2015, 09:24  [ТС]
Я полистал МСДН по поводу плана выполнения. Единственное что там в плане не красиво так это вот что:
Миниатюры
Выборка данных с объединением из 5 таблиц  
0
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
28.09.2015, 10:25  [ТС]
Психагнул.
Начал делать с нуля, нашёл несколько ошибок в самом запросе.
Понял как глупо выглядели со стороны мои попытки решить проблему.

Решение проблемы:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
            SELECT DISTINCT StatementID, StatementNumber, FlagMain, StudentID, DateCreate, MarkValue, AcademHours, teacher1ID, teacher2ID, teacher3ID, WorkLPSubjects.WorkLPSubjectID
            FROM [Statement] JOIN WorkLPSubjects
            ON [Statement].WorkLPSubjectID = WorkLPSubjects.WorkLPSubjectID
                             JOIN BaseLearningPlan
            ON WorkLPSubjects.BaseLearningPlanID = BaseLearningPlan.BaseLearningPlanID
                             JOIN SpecialtyInfo
            ON BaseLearningPlan.SpecialtyID = SpecialtyInfo.specialtyID
                             JOIN FacultyInfo
            ON SpecialtyInfo.FacultyID = FacultyInfo.FacultyID
                             JOIN UsersBD
            ON FacultyInfo.FacultyID = UsersBD.FacultID
            
            WHERE UsersID = 20
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
28.09.2015, 10:27
Demonikaliysis, я вам написал, что нужно делать. Вы же вместо этого предпочитаете оценивать красоту плана выполнения. Что ж, возможно это поможет когда-нибудь найти проблему.
0
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
28.09.2015, 12:44  [ТС]
invm
я вам написал, что нужно делать
Вы уж простите меня, но я впервые слышу про план выполнения, так что как с ним и для чего он нужен не знал, погуглил, но что-то не очень получилось понять всё сразу. Пришлось методом проб и ошибок разбираться.
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
28.09.2015, 12:49
Demonikaliysis, ну так спросили бы - никто бы не покусал
0
0 / 0 / 1
Регистрация: 20.07.2015
Сообщений: 63
28.09.2015, 14:42  [ТС]
Цитата Сообщение от invm Посмотреть сообщение
никто бы не покусал
1е сообщение в этой теме посмотрите пожалуйста. Люди разные бывают...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2015, 14:42
Помогаю со студенческими работами здесь

Выборка данных из нескольких таблиц
Есть две таблицы. Одна хранит в себе список объектов(поля: object_id,object_name). Вторая - список статусов данных...

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

Выборка данных из нескольких таблиц
Здравствуйте, проблема такая. Нужно проверить правильность запроса, кому несложно) 1. Вывести фамилию, должность, название отдела и...

Выборка данных из идентичных таблиц
Добрый день. Допустим есть две идентичные таблицы с одинаковыми именами столбцов. "id", "name",...

Выборка данных из двух таблиц
День добрый. Есть две таблицы(рисунок). Где Table2 - таблица со всеми пользователями. Итак. Я хочу вывести имена только тех...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru