2016-11-10 2 views
0

У меня есть оператор SQL Я выполняю для возврата данных, оператор объединяет несколько других таблиц, поэтому для возвращаемых записей я могу отображать Имя поля, а не идентификатор.SQL: инструкция SELECT для возврата всех записей, значение JOIN равно NULL, возврат запросов нет записей

Вот часть SQL:

SELECT 
    HardwareAsset.HardwareAssetTitle, 
    HardwareAsset.HardwareAssetAssetTag, 
    Department.DepartmentTitle AS HardwareAssetDepartmentTitle, 
    CostCentre.DepartmentTitle AS HardwareAssetCostCentreTitle, 
FROM 
    HardwareAsset 
INNER JOIN 
    Department Department ON (Department.DepartmentID = HardwareAsset.HardwareAssetDepartmentID) 
INNER JOIN 
    Department CostCentre ON (CostCentre.DepartmentID = HardwareAsset.HardwareAssetCostCentreID) 

Моя проблема заключается в том, что, даже если запрос выполняется успешно, поскольку некоторые столбцы (т.е. те, упомянутые выше) имеет значение NULL, то запрос, кажется, не возвращать записи, даже если в таблице есть записи.

Я попытался выполнить, когда записи имеют заполненные столбцы и показывают записи. Есть идеи?

+2

Попробуйте 'LEFT JOIN' вместо' INNER JOIN', и он должен возвращать записи, даже если во второй таблице нет совпадений. – beercodebeer

ответ

5

Когда вы используете INNER JOIN, поле объединения, например DepartmentID, ДОЛЖНО иметь действительную запись в обеих таблицах. Если вы хотите вернуть записи из своей основной таблицы, независимо от того, находятся ли они в ваших таблицах соединений, вы должны использовать LEFT JOIN.

Изменить INNER JOINLEFT JOIN.

+0

Cheers Guys! высоко оценил, как вы, вероятно, можете сказать, я довольно новичок в SQL. – TheTechnicalPaladin

Смежные вопросы