1

私は SQL Server を初めて使用し、いくつかのテーブル間で内部結合を実行しようとしています。

次のコードが機能します。

select 
tb_itens_pedido_compra.id_compra, 
tb_itens_pedido_compra.id_item, 
tb_itens_pedido_compra.ip_descricao, 
tb_itens_pedido_compra.ip_quantidade, 
tb_itens_pedido_compra.ip_valor, 
tb_fornecedores.nome_fornecedor
from tb_itens_pedido_compra, 
tb_pedido_compra 
inner join tb_fornecedores on tb_fornecedores.id_fornecedor = tb_pedido_compra.id_fornecedor

しかし、私がこれをやろうとすると:

select 
tb_itens_pedido_compra.id_compra, 
tb_itens_pedido_compra.id_item, 
tb_itens_pedido_compra.ip_descricao, 
tb_itens_pedido_compra.ip_quantidade, 
tb_itens_pedido_compra.ip_valor, 
tb_fornecedores.nome_fornecedor,
tb_produto.nome_produto 
from tb_itens_pedido_compra, 
tb_pedido_compra 
inner join tb_fornecedores on tb_fornecedores.id_fornecedor = tb_pedido_compra.id_fornecedor
inner join tb_produto on tb_produto.id_produto = tb_itens_pedido_compra.id_produto;

クエリの結果は次のようになります。

Mensagem 4104, Nível 16, Estado 1, Linha 12
O identificador de várias partes "tb_itens_pedido_compra.id_produto" não pôde ser    associado.

SQL Server のドキュメントによると、これは次のように変換する必要があります。

The multi-part identifier "%.*ls" could not be bound.

これを機能させるにはどうすればよいですか?内部結合を間違って使用していますか?

4

1 に答える 1

0

結合する列を少なくとも 1 つ見逃していると思います。テーブル エイリアスも使用することをお勧めします

from tb_itens_pedido_compra as ipc
    inner join tb_pedido_compra as pc on pc.id_compra = ipc.id_compra
    inner join tb_fornecedores as f on f.id_fornecedor = pc.id_fornecedor
    inner join tb_produto as p on p.id_produto = ipc.id_produto

スキーマに基づいて、これは機能するはずです

于 2013-10-03T19:40:55.460 に答える