2017-03-06 166 views
-2

我想要做的是選擇這些表格中的所有4個加入但我無法弄清楚如何因爲沒有連接到所有的表格其他。如何在SQL中加入4個表格

create table Encomenda(
    idEncomenda int identity, 
    idFornededor int not null, 
    estado varchar not null, 
    Constraint pk_Encomenda Primary Key (idEncomenda), 
    ); 

    create table Produto_Encomenda(
    idProduto_Encomenda int identity, 

    idProduto int not null, 
    idEncomenda int not null, 
    quantidade int not null, 

    constraint pk_Produto_Encomenda Primary Key (idProduto_Encomenda), 
    constraint fk_Produto foreign key (idProduto) references Produto (idProduto) , 
    constraint fk_idEncomenda foreign key (idEncomenda) references Encomenda (idEncomenda) , 
    ); 
    create table Fornecedor(
    idFornecedor int identity, 
    nomeFornecedor varchar(60) not null, 
    moradaFornecedor varchar(60) not null, 
    contactoFornecedor int not null, 
    constraint pk_Fornecedor Primary Key (idFornecedor), 
    ); 
    create table Produto(
    idProduto int identity, 
    nomeProduto varchar(60) not null, 
    quantidadeExistenteProduto int not null, 
    precoUnidade float not null, 
    Constraint pk_produto Primary Key (idProduto), 
    ); 

我試圖讓他們的4,我想什麼來顯示/選擇之間的連接是:

Fornecedor.nomeFornecedor, idEncomenda, Produto.nomeProduto and Produto_encomenda.quantidade" joined toguether where 
Produto.idproduto = produto_Encomenda.idproduto 
Fornecedor.idFornecedor = Encomenda.idFornecedor 

我不認爲我能更好地解釋,但到底我想選擇一個包含Fornecedor.nomeFornecedor,idEncomenda,Produto.nomeProduto和Produto_encomenda.quantidade的表格,但是因爲這4個表格沒有一個公共表格,所以我不知道如何進行連接:\ im可能只是太累了,但如果有人可以幫助我,我會apreciatte因爲我在這裏迷失在這裏

+0

都在同一個表BTW –

+1

'vb.net'看起來不相關的。 – Bugs

+1

請閱讀[我如何問一個好問題](http://stackoverflow.com/help/how-to-ask)。您的代碼需要位於代碼示例區域內,您的問題可以通過一些研究輕鬆解決。 – Ethilium

回答

1

好吧,現在我認爲我更好地理解了您需要的以下字段的問題:Fornecedor.nomeFornecedor,idEncomenda,Produto.nomeProduto和Produto_encomenda.quantidade。

那麼,讓我們來看看,如果這個工程:

SELECT f.nomeFornecedor, 
e.idEncomenda, 
p.nomeProduto, 
pe.quantidade 
FROM Fornecedor as f 
INNER JOIN Encomenda AS e 
ON f.idFornecedor = e.idFornededor 
INNER JOIN Produto_Encomenda as pe 
ON e.idEncomenda = pe.idEncomenda 
INNER JOIN Produto as p 
ON p.idProduto = pe.idProduto 

我認爲這應該工作

+0

thx m8你救了我的命xD –

0

使用'JOIN'語句連接表。有四種類型:

INNER - 只加入找到匹配項的位置。

LEFT - 僅加入在右手錶中找到匹配項的位置,但加入整個左側。

RIGHT - 只有在左手錶中找到匹配的情況下才加入,但加入整個權利。

FULL OUTER - 將兩個表連接在一起,即使沒有找到匹配項。

一個基本的JOIN是這樣的:

INNER JOIN MyTable ON MyTable.ID = SomeTable.ID 

你應該閱讀this

希望它有幫助!

+0

實際上並非如此。你可以完全做一個Join來做「從table1,table2到where table1.id2 = table2.id2」。確實,使用「JOIN」後來會更加清楚,但它並不是唯一的方法來加入舊的加入方式,因此應避免使用JOIN – asemprini87

+0

@ asemprini87。不僅讀起來不是很清楚,特別是當加入兩個以上的表時,但是當你需要加入多個條件時變得非常困難,並且當你有where子句時,它變得完全不可讀加入。沒有辦法知道哪些地方是加入,哪些不是。 – GuidoG

+2

@ asemprini87雖然正確,但我不會推薦任何人在本世紀使用隱式聯接,因爲顯式聯接是ANSI-SQL的一部分,已有20多年了。 –