从查询中提取所有数据,从另一个查询中提取一些数据

时间:2016-10-24 10:08:54

标签: mysql join

我有两个问题。

第一次查询

SELECT A.ID1, A.ID2, B.ID3, B.approved FROM A INNER JOIN B ON A.ID2 = B.ID2

结果如下:

ID1        ID2       ID3      approved
ABC        A01       B01        5
ABC        A01       B03        7
ABC        A01       B05        11
DEF        A02       B05        50
DEF        A02       B06        50

第二次查询

SELECT C.ID1, C.ID3, C.requested FROM C 

结果如下:

ID1        ID3     requested
ABC        B01        10
ABC        B02        20
ABC        B03        30
ABC        B04        40
ABC        B05        50
DEF        B02        99
DEF        B05        88
DEF        B01        77
DEF        B06        66

这是我的预期结果:

ID1        ID2       ID3    requested      approved
ABC        A01       B01       10             5
ABC        A01       B02       20             0
ABC        A01       B03       30             7
ABC        A01       B04       40             0
ABC        A01       B05       50            11
DEF        A02       B05       88            50
DEF        A02       B06       66            50
DEF        A02       B01       77             0

我的查询未显示预期结果:

    SELECT 
    C.ID1, C.ID3, C.requested,X.approved
FROM 
    C 
INNER JOIN (
            SELECT 
                A.ID1, A.ID2, B.ID3, B.approved 
            FROM 
                A
            INNER JOIN 
                B 
            ON 
                A.ID2 = B.ID2)X  
ON C.ID3 = X.ID3

修改 使用Tim解决方案时,结果如下:

    ID1        ID2       ID3    requested      approved
    ABC        A01       B01       10             5
    NULL       NULL      B02       20             0
    ABC        A01       B03       30             7
    NULL       NULL      B04       40             0
    ABC        A01       B05       50            11
    NULL       NULL      B02       99             0
    NULL       NULL      B01       77             0
    DEF        A02       B05       88            50
    DEF        A02       B06       66            50
    NULL       NULL      B01       77             0

当我使用Order时,NULL被分组。我不知道哪个NULL属于哪个ID1或ID2

1 个答案:

答案 0 :(得分:0)

您当前的查询几乎看起来是正确的,只是它使用RestRequest来删除INNER JOIN中与您的第一个加入查询不匹配的记录。此外,C与联接查询之间的联接条件是CID1都应匹配。试试这个:

ID3