【发布时间】:2010-10-13 14:58:27
【问题描述】:
谁能向我解释我的查询出了什么问题?
SELECT T2.TIPOPRODUTO
, T2.PRODUTO
, T1.ESPESSURA
, '' AS LARGURA
, '' AS COMPRIMENTO
, '' AS [ACABAM REVEST]
, '' AS [ESPECIF QUALIDADE]
, T1.CÓDIGORASTREABILIDADE
, T3.DATA
, T4.NOMEFANTASIA
, T7.NOME
, T5.DT_INICIO_RESERVA
, T1.PESO
, T5.DT_FIM_RESERVA
, '' AS DESTINO
, T3.OBSERVAÇÃO
, '' AS [CUSTO TOTAL]
FROM ([TABELA DE PRODUTOS/ESTOQUE] LEFT OUTER JOIN [TABELA DE PRODUTOS] ON ([TABELA DE PRODUTOS/ESTOQUE].PRODUTO=[TABELA DE PRODUTOS].ID))
, [TABELA DE PRODUTOS/ESTOQUE ] AS T1
, [TABELA DE PRODUTOS] AS T2
, [TABELA DE MOVIMENTAÇÃO DE ESTOQUE] AS T3
, [TABELA DE FORNECEDORES] AS T4
, RESERVAS_PRODUTOS_ESTOQUE AS T5
, [TABELA DE MOVIMENTAÇÃO DE PRODUTOS/ESTOQUE] AS T6
, [TABELA DE USUÁRIOS] AS T7
, [TABELA DE PEDIDOS DE COMPRA] AS T8
WHERE (((T1.Produto)=[T2].[ID])
AND ((T1.ID)=[T5].[ID_PRODUTO_ESTOQUE])
AND ((T5.id_vendedor)=[T7].[ID])
AND ((T3.ID)=[T6].[ID])
AND ((T2.ID)=[T6].[PRODUTO])
AND ((T4.ID)=[T8].[FORNECEDOR])
AND ((T8.Comprador)=[T7].[ID]));
我最好的猜测是它在这条线上失败了:
([TABELA DE PRODUTOS/ESTOQUE] LEFT OUTER JOIN [TABELA DE PRODUTOS] ON ([TABELA DE PRODUTOS/ESTOQUE].PRODUTO=[TABELA DE PRODUTOS].ID))
【问题讨论】:
-
这是一个看起来有点奇怪的查询,因为您有许多未连接任何东西的表。据我所知,唯一适用于您的设置的连接是 INNER JOIN。但是,您可能需要重新考虑您的设计。
-
LEFT OUTER JOIN 不是 Jet SQL 语法。它使用 LEFT JOIN 和 RIGHT JOIN,但省略了“OUTER”。我不能说它是否 100% 等同于你在其他 SQL 方言中得到的。
-
@David W. Fenton:你测试过你的断言吗?我在 Jet 3.51、Jet 4.0 和 ACE (2007) 中进行了测试,并且 LEFT OUTER JOIN 对所有版本都有效。在我看来,如果您不测试您的 SQL,那么将其作为答案发布是没有用的。