0

乡亲

我有 2 个表国家代码,cctonumbers,如下所述。

我有我尝试过的查询,但没有得到所需的输出。

我的输出

 country          destination                     country_code   destination_code

Afghanistan  Afghanistan Mobile Etisalat              93        78
Afghanistan  Afghanistan Mobile Etisalat              93        72
Afghanistan  Afghanistan Mobile Roshan                93        79
Afghanistan  Afghanistan                              93        93

期望的输出

country          destination                     country_code   destination_code

Afghanistan  Afghanistan Mobile Etisalat             93           78

Afghanistan  Afghanistan Mobile Etisalat             93           72    

Afghanistan  Afghanistan Mobile Roshan               93           79

使用的表格如下

国家代码表

id       parentid   countryname 
1031     0          afghanistan 
1035     1031       Afghanistan Mobile Etisalat
1036     1031       Afghanistan Mobile Roshan

cctonumbers 表

id       countrycode_id     parentid         number 
15731    1031               0                93
15197    1035               15731            78
15198    1035               15731            72
15199    1036               15731            79

我使用的查询如下,但没有得到想要的结果。

select * 
   from 
      cctonumbers 
         LEFT JOIN countrycodes as CC 
            ON cctonumbers.countrycode_id = CC.id 
   WHERE 
      (     CC.parentid=0 
        AND number like '93%'
        and cctonumbers.id in 
                ( select cctonumbers.parentid 
                     from cctonumbers 
                        LEFT JOIN countrycodes as CC 
                           ON cctonumbers.countrycode_id = CC.id 
                        WHERE number like '7%'
                          AND CC.parentid!=0 )
                ) 
          or (     CC.parentid != 0 
               AND number like '7%' 
               AND CC.parentid in 
                       ( select CC.id 
                            from cctonumbers 
                               LEFT JOIN countrycodes as CC 
                                  ON cctonumbers.countrycode_id=CC.id 
                            WHERE CC.parentid=0 
                              AND number like '93%' )
             ) 
   ORDER BY 
      cctonumbers.number Asc
4

1 回答 1

0

您似乎正在寻找的是与特定国家代码相关联的所有目的地。由于您实际上没有显示 cctonumbers.id = 15731 的任何返回结果,我认为您正在旋转以获得结果。让我们倒转这棵树,而不是沿着它走下去。

仅从具有父 ID 的那些 CCToNumbers 记录开始,因为您似乎只有 1 级深度。拥有这些子级条目后,在其父级上加入 CCToNumbers ......然后分别转到两者的国家代码表。

SELECT
      CtoN.ID,
      PCountry.CountryName,
      DCountry.CountryName as Destination,
      CtoNParent.Number as Country_Code,
      CtoN.Number as Destination_Code
   from 
      cctonumbers CtoN
         JOIN cctonumbers as CtoNParent
             ON CtoN.parentid = CtoNParent.ID
            AND CtoNParent.number like '93%'
            JOIN countrycodes as PCountry
               ON CtoNParent.CountryCode_Id = PCountry.ID
         JOIN countrycodes as DCountry
            ON CtoN.CountryCode_Id = DCountry.ID
   where
      CtoN.number like '7%'
于 2013-10-02T13:49:07.940 回答