MYSQL Два внутренних соединения не дают результата - PullRequest
0 голосов
/ 20 марта 2020

У меня есть 3 таблицы, связанные с идентификаторами, сконструированными так:

RAD table
rad_id      strp_ID     strf_ID
1               1           null
2               1           null
3           null            3
4           null            4
5           null            4

STRANKEP table
strp_ID     strp_NAZIV
1           data1
2           data2
3           data3

STRANKEF table
strf_ID     strf_NAZIV
1           data1
2           data2
3           data3
4           data4

Я пытаюсь получить, например, значение strf_NAZIV с data4 в случае rad_id = 4. Потому что rad_id = 4 имеет strf_ID = 4 и в таблице STRANKEF stf_ID = 4 имеет значение data4.

Пример карьера для rad_id = 4:

SELECT rad_id, strp_NAZIV, strf_NAZIV FROM RAD 
INNER JOIN STRANKEP ON RAD.strp_ID=STRANKEP.strp_ID 
INNER JOIN STRANKEF ON RAD.strf_ID=STRANKEF.strf_ID 
WHERE rad_id = 4;

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

rad_id strp_NAZIV strf_NAZIV
0 rows

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Нет таблицы STRANKEP, где strp_ID = 4. При выполнении INNER JOIN он сохраняет только те строки, в которых совпадают обе таблицы.

Может быть, вы хотите это:

SELECT rad_id, strp_NAZIV, strf_NAZIV 
FROM RAD 
LEFT JOIN STRANKEP ON RAD.strp_ID=STRANKEP.strp_ID 
LEFT JOIN STRANKEF ON RAD.strf_ID=STRANKEF.strf_ID 
WHERE rad_id = 4;
1 голос
/ 20 марта 2020

Хорошо, во-первых, внутреннее объединение возвращает результаты только в том случае, если атрибут кортежа существует в обеих таблицах, когда одна из таблиц содержит нулевые значения, например, для RAD, кортежи с ID 3, 4, 5 не будут быть возвращен из результата первого внутреннего соединения и 1 и 2 из 2-го. Для получения дополнительной информации:

https://www.w3schools.com/SQL/sql_join_inner.asp

Попробуйте использовать внешние объединения вместо внутренних, чтобы получить результаты с нулевыми значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...