民众
我有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
使用的表格如下
countrycodes表
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
答案 0 :(得分: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%'