SQL - 如何使用不同的值选择同一列两次?

时间:2014-03-27 14:12:34

标签: sql ms-access

大家好,

我有以下数据库表:

enter image description here

我想获得PROD_VERS_ALLOC_ID列背后的产品名称。如果只有一列,而不是两列(_A和_B),这将是相当容易的,但是,我不确定如何从两个PROD_VERS_ALLOC_ID列引用产品名称。

以下是我的SQL查询现在的样子:

SELECT p.PROD_NAME, pv.PROD_VERS_NAME, cl.COMPA_LVL_NAME
FROM TBL_PROD AS p, TBL_PROD_VERS AS pv, TBL_PROD_VERS_ALLOC AS pva, TBL_COMPA_LVL AS cl, TBL_COMPA AS c
WHERE p.PROD_ID=pva.PROD_ID And pv.PROD_VERS_ID=pva.PROD_VERS_ID And cl.COMPA_LVL_ID=c.COMPA_LVL_ID And pva.PROD_VERS_ALLOC_ID=c.PROD_VERS_ALLOC_ID_B
And p.PROD_ID=66;

基本上我需要的是

之类的内容
SELECT p.PROD_NAME_A, p.PROD_NAME_B, [....]

PROD_NAME_A需要是PROD_VERS_ALLOC_ID_A和PROD_NAME_B中ID的名称,产品名称为PROD_VERS_ALLOC_ID_B。

有没有人知道如何做到这一点?我需要做子查询吗?

最好的问候, daZza

1 个答案:

答案 0 :(得分:0)

我认为没关系:

    SELECT pa.PROD_NAME, pb.PROD_NAME, pv1.PROD_VERS_NAME, pv2.PROD_VERS_NAME,cl.COMPA_LVL_NAME

    FROM TBL_PROD AS pa, TBL_PROD AS pb,TBL_PROD_VERS AS pv1, TBL_PROD_VERS AS pv2,
TBL_PROD_VERS_ALLOC AS pva, TBL_PROD_VERS_ALLOC AS pvb, 
TBL_COMPA_LVL AS cl, TBL_COMPA AS c

    WHERE 
    pa.PROD_ID=pva.PROD_ID And 
    pv1.PROD_VERS_ID=pva.PROD_VERS_ID And 
    pva.PROD_VERS_ALLOC_ID=c.PROD_VERS_ALLOC_ID_A And 

    pb.PROD_ID=pvb.PROD_ID And 
    pv2.PROD_VERS_ID=pvb.PROD_VERS_ID And 
    pvb.PROD_VERS_ALLOC_ID=c.PROD_VERS_ALLOC_ID_B And 

    cl.COMPA_LVL_ID=c.COMPA_LVL_ID And     
    p.PROD_ID=66;