【问题标题】:SQL Statement for Accessing Data from Multiple Tables从多个表访问数据的 SQL 语句
【发布时间】:2017-10-19 09:05:05
【问题描述】:

我有 7 个表格,如下图所示。 我将输入发动机编号或底盘编号,它应该显示相应的表格信息(这些表格只提到了字段),因此所有字段都可以显示为结果。 我可以使用硬编码的发动机编号或底盘编号。每次执行此查询时,我都会硬编码所需的引擎/底盘编号并获得结果。 有人可以帮我写这个查询吗? Click Here to See the Tables

【问题讨论】:

  • 您需要的语法是JOIN。一个好的起点是 [SQL] 标签上的信息

标签: sql select join union union-all


【解决方案1】:

这可能是您解决方案的起点。

SELECT prod.EngineNo AS engNo, prod.ChassisNo, doral.doralNo [, table.column [AS name]]
FROM DOProductSpecsDetais AS prod
INNER JOIN DORAL AS doral  
  ON prod.DOProductSpecsDetailID = doral.DOProductSpecsID
INNER JOIN DOProductDetail AS prodDetail
  ON prod.DOProductDetailID = prodDetail.DOProductDetailID
WHERE prod.ChassisNo = '<input>' OR prod.EngineNo='<input>'

SELECTFROM 语句之间,您可以选择JOIN 之外的任何列。

您可以级联任意数量的JOINs...

您打算使用哪个 DBMS?

一个建议:尽可能简化列名。

还有一点:如果你刚开始做数据库方面的事情,启动测试环境并使用客户端工具总是有帮助的。

【讨论】:

  • 是的,这对我很有用。太感谢了。我刚刚为更多的表添加了更多的 INNER JOIN,就是这样。工作得很好:)
  • 但是,我现在还有一个问题,如果我只想从表中选择特定字段而不是所有字段怎么办?
  • @adeel,我用 SELECT 语句中的详细信息编辑了答案
【解决方案2】:

你可以这样写查询:

select * from 
DoProductSpecsDetail tbl1 inner join Doral tbl2 
on tbl1.DoProductSpecsDetailId = tbl2.DoProductSpecsId
inner join DoproductDetail tbl3
on tbl1.DoProductDetailId = tbl3.DoProductDetailId
inner join ProductColor tbl4
on tbl1.ProductColorId = tbl4.ProductColorId
inner join DoDetail tbl5
on tbl3.DeliveryOrderDetailId = tbl5.DeliveryOrderId
inner join ProductMain tbl6
on tbl3.ProductId = tbl6.ProductId
inner join BPMain tbl7
on tbl5.BusinessPartnerId = tbl7.BusinessPartnerId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2016-01-29
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多