Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Джоин таблиц / 6 сообщений из 6, страница 1 из 1
20.09.2020, 23:02
    #40000703
Дмитрий86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Джоин таблиц
Всем добрый вечер!
Опишу свою задачу.
У меня есть три таблицы. Приложены скрины.
Данные из них заполняются в одну общую таблицу my_table. Также приложен скрин общей таблицы.
Далее пишу запрос, который сджойнивает эту общую таблицу с таблицей all_obtain:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT DATE,
            job,
            object.name AS ObjectID,
            dep.name AS DepartID,
            post.name AS PostID,
            VALUE
FROM all_obtain ao
JOIN my_table object
ON (object.id = ao.ObjectID)
JOIN my_table dep
ON (dep.dep_id = ao.DepartID)
JOIN my_table post
ON (post.post_id = ao.PostID)



Но на выходе я получаю пустую таблицу с полями: | date | job | ObjectID | DepartID | PostID | value |

Объясните пожалуйста почему при джоин таблиц, я получаю таблицу без записей? Всем спасибо за помощь!

Все таблицы представлены на скриншоте. Внизу 3 изначальные таблицы, данных из которых наполняют таблицу длинную (my_table). Широкая таблица эта таблица all_obtain
...
Рейтинг: 0 / 0
20.09.2020, 23:07
    #40000704
Дмитрий86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Джоин таблиц
Дмитрий86, все таблицы:
...
Рейтинг: 0 / 0
21.09.2020, 00:31
    #40000714
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Джоин таблиц
Дмитрий86
Объясните пожалуйста почему при джоин таблиц, я получаю таблицу без записей? Всем спасибо за помощь!
Должно выводиться. На первый взгляд всё верно.
Может, перепутали базы, или может объекты с таким именем есть разные, с разными схемами. Или может типы нечисловые.

Лучше делайте скрипты с временными таблицами и данными, так проще разбираться, чем со скринами.
...
Рейтинг: 0 / 0
21.09.2020, 07:14
    #40000729
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Джоин таблиц
Дмитрий86

Объясните пожалуйста почему при джоин таблиц, я получаю таблицу без записей? Всем спасибо за помощь!


Товарищи ученые, у меня в подполе происходит подземный стук. Объясните, пожалуйста, отчего он происходит.

Выполни, последовательно


Код: 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.
26.
SELECT *
FROM all_obtain ao
;

SELECT *
FROM all_obtain ao
JOIN my_table object
ON (object.id = ao.ObjectID)
;

SELECT *
FROM all_obtain ao
JOIN my_table object
ON (object.id = ao.ObjectID)
JOIN my_table dep
ON (dep.dep_id = ao.DepartID)
;

SELECT *
FROM all_obtain ao
JOIN my_table object
ON (object.id = ao.ObjectID)
JOIN my_table dep
ON (dep.dep_id = ao.DepartID)
JOIN my_table post
ON (post.post_id = ao.PostID)



и наступит просветление...
...
Рейтинг: 0 / 0
21.09.2020, 11:00
    #40000786
Агрох
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Джоин таблиц
Вставь везде LEFT JOIN и COALESCE на результаты - возможно где то в одной таблице данных нет и он всю строку объявляет несуществующей, хотя в двух других данные есть.

Проверь типы данных для полей ID. Учитывая что выше ты name превращаешь в id у тебя они могут быть строковые, возможно нужно вставить TRIM, для отсечения пробелов или явно приводить к integer.
...
Рейтинг: 0 / 0
21.09.2020, 11:14
    #40000791
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Джоин таблиц
Агрох,

джойнить по строкам, это вообще так себе идея
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Джоин таблиц / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]