如何根据父表中的值从子表中选择项目?

时间:2016-07-29 12:58:29

标签: sql

我有一个名为tbl_PO的表和另一个名为tbl_PO_LineItems的表。在tbl_PO中,相关字段是“PO#”和“状态”。 “状态”字段有几个选项,我们现在感兴趣的是“已关闭”。每个PO都有许多行项,因此tbl_PO中的PO#和tbl_PO_LineItems中的PO#之间存在1对多的关系。 tbl_PO_LineItems中有一个名为'LineNum'的字段,它是行项目编号。还有另一个名为“Code”的字段,它是PO#和LineNum的组合。我知道这是一个组合字段,但它使数据流更容易在数据库的其余部分。

在另一个表中,将其命名为tbl_table3,我希望能够使用SQL语句:

SELECT Code FROM tbl_PO_LineItems WHERE tbl_PO.Status = 'Closed'

问题是代码与tbl_PO中的任何字段都没有直接链接。我需要浏览与该代码关联的PO#,以从tbl_PO获取该PO#的状态值。我怎样才能做到这一点?我在JOIN命令上读了一下,但我对它不太满意。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

使用INNER JOIN

SELECT t1.PO_num, t2.Code
FROM tbl_PO t1
INNER JOIN tbl_PO_LineItems t2
    ON t1.PO_num = t2.PO_num
WHERE t1.Status = 'Closed'

我不知道我对合并的专栏Code有多疯狂,但没有更多信息,我无法提出任何改进建议。

答案 1 :(得分:0)

以下是一些选项,有一个加入,一个没有。如果这就是你要问的问题,请告诉我。(我把它写成了我的头脑,但它应该运行)

SELECT * --you can choose your columns here
FROM tbl_PO AS PO, tbl_PO_LineItems AS LineItems
WHERE PO.ID = LineItems.PONumber
AND LineItems.Status = 'Closed

或加入

SELECT * 
FROM  tbl_PO AS PO
JOIN tbl_PO_LineItems AS LineItems
ON LineItems.PONumber = PO.ID
AND LineItems.Status = 'Closed