INNER JOIN'ed столбцы из таблиц не отображаются - без каких-либо ошибок - PullRequest
0 голосов
/ 22 мая 2019

У меня три таблицы 1 и 2 являются основными, а 3-я имеет отношение к 1 и 2. Я пытаюсь отобразить только некоторые записи из таблицы 3, используя WHERE, однако я хочу, чтобы значения из базовых таблиц также отображались вместе с Результаты запроса.

Я пытался использовать внутреннее соединение (до WHERE), но есть только результат условия SELECT x, y FROM t3 WHERE; -> Этот результат отображается правильно. Однако строки my to INNER JOIN выглядят так, как будто они игнорируются - ошибки нет, объединенные

SELECT komputery.nazwa, komputery.id FROM komputery
INNER JOIN system_op ON komputery.system_op = system_op.id
INNER JOIN sl_org ON komputery.lokalizacja = sl_org.id
WHERE system_op IN (SELECT id FROM system_op WHERE nazwa='Windows 7' AND architektura='x64') 
OR lokalizacja IN (SELECT id FROM sl_org WHERE nazwa='IT');

Нет ошибок. Фактический: Только ВЫБРАТЬ x, y ОТ t3 ГДЕ отображается условие Ожидаемый: Вывести значения из таблиц, к которым я имею отношение, например, в T3. Если я выбираю только ПК с Windows 7 x64 из T3 - я также хочу, чтобы Windows 7 x64 (который находится в базовой таблице) отображался рядом с результатами T3 (который использует отношение для получения Windows 7 x64)

1 Ответ

0 голосов
/ 22 мая 2019

ОК, я нашел в чем проблема. После SELECT я не выбрал ни одного столбца из таблицы, к которой я присоединялся. Значения не отображались:

SELECT komputery.nazwa, komputery.id, system_op.nazwa as system_operacyjny, system_op.architektura, sl_org.nazwa as lokalizacja FROM komputery
INNER JOIN system_op 
ON komputery.system_op = system_op.id
INNER JOIN sl_org 
ON komputery.lokalizacja = sl_org.id
WHERE system_op IN (SELECT id FROM system_op WHERE nazwa='Windows 7' AND architektura='x64') 
OR lokalizacja IN (SELECT id FROM sl_org WHERE nazwa='IT');

Этот код работает правильно.

...