[英]Subqueries on subqueries
我正在尝试创建一个选择语句
我需要从一个表中收集一条记录,该记录等于另一张表中使用的相同代码。
更好的是,客户从下拉列表中选择城市和该城市的类别。 当客户单击下一步时,将显示该城市中符合该类别的各个地点。 但我不知道我要去哪里。
现在,当客户选择一个城市时,每个城市都会读取两条记录,一个正确的城市代码和一个以“ bx”作为首字母的邮政信箱代码
在我的第一个查询中,为了消除重复,我说
select c.[Description] from city c
where c.Provincecode like 'EC' and
c.citycode in (select c.citycode from City c
where SUBSTRING(c.citycode,0,3) not like 'bx')
给我一个城市的名字
但是现在,如果客户选择了例如仅现金看的地方,那么结果中应该只显示一条记录
但是我会尽力而为,我无法获得正确的语法
我试过了:
select c.[Description] from city c
where c.Provincecode like 'EC' and
c.citycode in (select c.citycode from City c
where SUBSTRING(c.citycode,0,3) not like 'bx')
and exists (select * from Customers cu
where cu.Category like 'SC' and cu.Province like 'EC')
但这带来了超出预期的结果
这是使用访问数据库完成的,但是我正在使用SQL进行编码,并将其重新编写为访问。 那不是问题
因此,如果有人可以提供SQL答案,那么我可以从那里完成其余的工作
我不确定是否应该参加。 我确实尝试过
select * from
(select c.[Description] from city c
where c.Provincecode like 'EC' and
c.citycode in (select c.citycode from City c
where SUBSTRING(c.citycode,0,3) not like 'bx')) x
join Customers on province=city.provincecode where Category like 'SC'
但我收到无法绑定多部分标识符的错误
编辑
这是新查询
select *
from
(
select c.*
from city c
where c.Provincecode like 'EC'
and c.citycode in
(
select c.citycode
from City c
where SUBSTRING(c.citycode,0,3) not like 'bx'
)
) x
join
Customers
on province=x.Provincecode
where Category like 'SC'
返回的是
如您所见,有太多以C Strydom为客户的结果,但是所有城市都在那里
对于此特定示例,仅应显示一条记录,第二条记录
尽管我不喜欢使用SELECT *,但您确实希望了解更多实际的列,但我将其留给您。 查询应该很简单,因为您主要是在查看“城市”表中的特定省份代码,但不能以“ bx”开头。 只需在where子句中使用它即可...您可以测试一条记录的多项内容,而不必根据其他条件加入自身。 一旦有了,就可以简单地连接到您要限制的类别的客户表。
select *
from
city c
JOIN Customers CU
on c.ProvinceCode = CU.Province
AND CU.Category like 'SC'
where
c.ProvinceCode like 'EC'
and NOT substr( c.CityCode,0,3 ) = 'bx'
现在,您为每个客户发行了多个记录。 如果您要加入的只是客户表中的省代码,您将得到笛卡尔结果...但是,如果您加入到客户的省代码和城市中,则只会得到与之匹配的单个代码...但是我们没有客户表详细信息来确认该列关系。
该问题是JOIN的不完整(有关详细信息,请参阅问题注释)。 工作的查询是
select *
from
(
select c.*
from city c
where c.Provincecode like 'EC'
and c.citycode in
(
select c.citycode
from City c
where SUBSTRING(c.citycode,0,3) not like 'bx'
)
) x
INNER JOIN
Customers
ON Customers.province=x.Provincecode
AND Customers.city=x.Citycode
where Category like 'SC'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.