Доброе утро всем, я делаю запрос в Access 2010, и у меня странное поведение, поэтому я хотел бы услышать ваше мнение, вот и мы:
SELECT X.*, L.CodLinea
FROM (
SELECT TOP 1 'LBASE' AS CodLinea, 'Linea Base' AS Descrizione FROM ParametriAzienda
) AS X LEFT JOIN Linee AS L
ON X.CodLinea = L.CodLinea
Внутренний запросдает всегда ОДНУ строку с двумя столбцами, которые должны быть примерно такими:
CodLinea | Descrizione
----------+--------------
LBASE | Linea Base
Теперь при выполнении левого соединения, как описано выше, должна возвращаться ОДНА строка с другим столбцом с именем L.CodLinea со значением, равным LBASE'или NULL в зависимости от того, есть ли в таблице Linee значение LBASE.Таким образом, результатом может быть:
X.CodLinea | X.Descrizione | L.CodLinea
+-------------+-----------------+--------------+
LBASE | Linea Base | LBASE
, если значение существует, или
X.CodLinea | X.Descrizione | L.CodLinea
+-------------+-----------------+--------------+
LBASE | Linea Base | null
, если значение не существует.На самом деле я получаю:
X.CodLinea | X.Descrizione | L.CodLinea
+-------------+-----------------+--------------+
LBASE | Linea Base | 0
LBASE | Linea Base | 0
LBASE | Linea Base | 0
LBASE | Linea Base | 0
LBASE | Linea Base | 0
Это определенно не может быть возможным, потому что: а) я должен получить только один ряд;б) 0 не равно или как LBASE.Если я использую WHERE вместо LEFT JOIN (аналогично INNER JOIN) или RIGHT JOIN, результаты будут правильными (0 строк).
В чем может быть проблема?
РЕДАКТИРОВАТЬ: На самом деле ParametriAzienda имеет только одну строку, и Linee не содержит значение LBASE.