我有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的数据。
答案 0 :(得分:0)
您可以联接Products
和Batch
表以从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