从第三张表中检索数据

时间:2018-07-07 04:41:26

标签: c# sql .net sql-server

我有3个表,分别为公司产品批处理

公司表主要具有 comp_id和comp_name 作为属性。

产品表具有 Prod_id,Prod_name和comp_id 作为产品表中的外键

批次表具有 Batch_id,Prod_id_fk 作为产品表中的外键以及许多其他属性。

现在,基本上我想做的是,如果我可以从批处理表中检索Comp_id,那对我来说会更好。

注意:Comp_id不在批处理表中,但是批处理表具有prod_id_fk,并且每个prod_id与公司相关。

我没有做到这一点。请帮忙。

用简单的话来说,表A链接到表B,表B链接到表C。我想通过在C上查询来从C获取A的数据。

5 个答案:

答案 0 :(得分:0)

您可以联接ProductsBatch表以从Products(包括comp_id)中获取与每个Batch关联的值。这是一个基本示例,将从Batch中返回所有值以及相关的comp_id

SELECT b.*, p.comp_id
FROM Batch b
INNER JOIN Products p ON b.Prod_id_fk = p.Prod_id;

在使用诸如SQL Server之类的关系数据库时,执行联接可能是您需要做的很多事情。我强烈建议您阅读有关SQL数据库的初学者教程,以了解使用它们的基础知识。

答案 1 :(得分:0)

您可以使用联接!只需将Batch表与Products表主键(prod_id)上的Products表与Batch表(prod_id_fk)中的外键联接,然后将Products表与Company表主键上的Company表联接(在产品表(comp_id)中带有外键。

select b.batch_id, c.comp_name
from batch b
join products p
on b.prod_id_fk = p.prod_id
join company c
on c.comp_id = p.comp_id

答案 2 :(得分:0)

select * from Batch batch inner join Products products on products.Prod_id = batch.Prod_id_fk
inner join  Company company on  company.comp_id = Products.comp_id 

答案 3 :(得分:0)

感谢我所解决的一切。

SqlDataAdapter sda = new SqlDataAdapter("SELECT batch.batch_id, batch.product_id_fk, batch.quantity, batch.purchaseDate, batch.manufacturing_date, batch.expiryDate, batch.sold_qty, batch.left_qty, batch.packing, batch.p_price, batch.received_percentage, company.comp_name, products.p_name, products.p_id_pk FROM batch INNER JOIN products ON batch.product_id_fk = products.p_id_pk INNER JOIN company ON products.fk_com_id = company.comp_id where company.comp_id='" + id+ "'", con);

答案 4 :(得分:0)

使用此

从公司c中选择c。*

p.comp_id = c.comp_id上的内部联接产品p

b.prod_id_fk = p.prod_id上的内部加入批次b