【问题标题】:Retrieve Data from 3rd table从第三个表中检索数据
【发布时间】:2018-07-07 04:41:26
【问题描述】:

我有 3 个名为 CompaniesProductsBatch 的表。

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

Products Table 具有 Prod_id、Prod_name 和 comp_id 作为 Products Table 中的 外键

Batch Table 具有 Batch_id, Prod_id_fk 作为 Products Table 的外键以及许多其他属性。

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

注意:comp_id 不在Batch 表中,但是batch 表有prod_id_fk 并且每个prod_id 都与公司相关。

我不知道会这样做。请帮忙。

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

【问题讨论】:

    标签: c# sql .net sql-server


    【解决方案1】:

    您可以连接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 数据库的初学者教程,以了解使用它们所需的基础知识。

    【讨论】:

    • 如果我想获取存储在公司表中的 Comp_name 怎么办。
    • 因为我还想获取存储在公司表中的 company_name。 Product 表和 company 表有外键关系。
    • 请回复我。
    • @JahanzaibNiazi 然后您必须将该表加入到查询中。这是绝对的基本 SQL,请听从 Elezar 的建议,并至少对这个主题有所了解。如"How to ask" 所述,您需要在提问之前进行研究。
    • 我明白,但这是一个问答论坛,而不是支持聊天热线。我们都在做其他事情,不一定可以立即回答您。纠缠我们不会得到更快的回应。事实上,它更有可能惹恼人们,并导致根本没有人回应。无论如何,已添加的其他答案也显示了如何加入多个表以获取 comp_name,因此您现在应该有答案了。
    【解决方案2】:

    您可以使用连接!只需将 Batch 表与 Products 表在 Products 表 (prod_id) 的主键上与 Batch 表 (prod_id_fk) 中的外键连接起来,然后将 Products 表与 Company 表在 Company 表的主键上连接起来( comp_id) 与 Products 表中的外键 (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
    

    【讨论】:

      【解决方案3】:
      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 
      

      【讨论】:

      • 不要只是粘贴代码,总是尝试解释代码或查询。会更有帮助。
      • 我实际上是新来的帮助。我希望我能尽快改善。感谢您的建议。
      【解决方案4】:

      感谢我解决的所有问题。

      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);
      

      【讨论】:

      • 不要养成使用字符串连接来创建查询的习惯,否则您的代码将容易受到 SQL 注入攻击,以及带有异常错误的运行时错误。
      【解决方案5】:

      使用这个

      从公司 c 中选择 c.*

      在 p.comp_id=c.comp_id 上内连接产品 p

      b.prod_id_fk=p.prod_id 上的内连接批次 b

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-17
        • 2017-04-12
        • 1970-01-01
        相关资源
        最近更新 更多