子查询中的子查询

时间:2014-06-04 13:31:22

标签: sql subquery

如何在另一个子查询中创建子查询?

这就是我得到的,显然它不起作用:

"Select `region` from `region` where `regioncode` IN 
        (Select `city` from `city` where `citycode` IN 
                (Select `citycode` from `postcode` where `postcode` LIKE '%" + txtPostcode.Text + "%'))"

对不起我的业余问题。

表格结构:

表格区域:

regioncode  region      provincecode    netnumber

Tabel city:

citycode    city    from    to  regioncode

"从"和"到"意味着城市的邮政编码范围。

Tabel邮政编码:

postcode    street  from    to  citycode

这里"来自"和"到"暗示地址编号的范围

Tabel省:

provincecode    province

所以,我应该可以从邮政编码的来源获取该区域。邮政编码将从文本框中输入。

我得到了街道,城市和地址编号范围。但该地区并不适合我。

对于我破碎的英语和我的业余问题也很抱歉:。

1 个答案:

答案 0 :(得分:0)

您可以考虑使用JOINs而不是多个子查询。

SELECT region from region r
JOIN city c ON c.regioncode = r.regioncode
JOIN postcode pc ON pc.citycode = c.citycode
WHERE pc.postcode LIKE '%test%'

这相当于您当前尝试对子查询执行的操作。

编辑:我已将上述查询更新为不通过省份,因为如果城市有区域代码并且您只是想要获取区域,则不需要它。您仍然可以使用子查询。您应该从regioncode表而不是city获取city

SELECT region FROM region WHERE regioncode IN 
    (SELECT regioncode FROM city WHERE citycode IN 
        (SELECT citycode FROM postcode WHERE postcode LIKE '%test%')
    )

我只是使用test作为txtPostcode.Text中任何内容的临时值