SQL Server左连接问题

时间:2016-12-02 12:55:33

标签: sql sql-server left-join

执行此操作时:

SELECT i.descricao, 
       sii.quantidade           quantidade_inicial, 
       sii.quantidade * i.valor valor_inicial
FROM   itensvalor i 
       LEFT JOIN saldoinicialprodutositens sii 
              ON i.id = sii.iditemvalor 
                 AND Isnull(sii.datahoraexclusao, '') = '' 
WHERE  sii.idSaldoInicialProduto IN (SELECT id FROM saldoInicialProdutos WHERE idmovimentodiario = 76)

它返回:

enter image description here

当我执行此操作时:

SELECT i.descricao, 
       sfi.quantidade           quantidade_final, 
       sfi.quantidade * i.valor valor_final 
FROM   itensvalor i 
       LEFT JOIN saldofinalprodutositens sfi 
              ON i.id = sfi.iditemvalor 
                 AND Isnull(sfi.datahoraexclusao, '') = '' 
WHERE    sfi.idSaldoFinalProduto IN (SELECT id FROM saldoFinalProdutos WHERE idmovimentodiario = 76)

它返回:(使用R $ 100,00)

enter image description here

但是,最后,当我尝试加入2个表时,不会出现引用R $ 100,00的值。

我正在尝试使用此查询加入:

SELECT i.descricao, 
       sii.quantidade           quantidade_inicial, 
       sii.quantidade * i.valor valor_inicial, 
       sfi.quantidade           quantidade_final, 
       sfi.quantidade * i.valor valor_final 
FROM   itensvalor i 
       LEFT JOIN saldofinalprodutositens sfi 
              ON i.id = sfi.iditemvalor 
                 AND Isnull(sfi.datahoraexclusao, '') = '' 
       LEFT JOIN saldoinicialprodutositens sii 
              ON i.id = sii.iditemvalor 
                 AND Isnull(sii.datahoraexclusao, '') = '' 
WHERE  sii.idSaldoInicialProduto IN (SELECT id FROM saldoInicialProdutos WHERE idmovimentodiario = 76)
AND    sfi.idSaldoFinalProduto IN (SELECT id FROM saldoFinalProdutos WHERE idmovimentodiario = 76)

enter image description here

1 个答案:

答案 0 :(得分:4)

您需要在ON子句中移动WHERE才能使其工作:

sfi.idSaldoFinalProduto

否则,您的#-------------------------------- entry_grid_exp=[] entry_grid_req=[] #-------------------------------- exp_list = Frame(program, bg="#dcdcdc", height=500, width=600) exp_list.grid(row=3, column=1) #-------------------------------- for i in range(1, 16): entry_column=[] for x in range(0, 13): entry_column.append(Label(exp_list, width=15,bg="#FFFFFF",relief=SUNKEN)) entry_column[x].grid(row = x+6, column=i, padx=0, pady=0) entry_grid_exp.append(entry_column) Request_list = Label(exp_list, width=10, bg="#dcdcdc", fg="#000000", text="Requested list.") Request_list.grid(row = 20, column=1) for i in range(1,16): box3 = Label(exp_list, width=10, bg="#dcdcdc", fg="#dcdcdc", text="divider") box3.grid(row = 21, column=i) for i in range(1, 16): entry_column=[] for x in range(0, 6): entry_column.append(Label(exp_list, width=15,bg="#FFFFFF",relief=SUNKEN)) entry_column[x].grid(row = x+21, column=i, padx=0, pady=0) entry_grid_req.append(entry_column) #-------------------------------- 为空,并且省略该行。