关于将一条SQL语句查出的记录数作为where的查询条件

string sql = String.Format("select distinct A.线路 from" +
" (select 线路,站点所属 from LineSite where 站点名称 = '{0}') A," +
" (select 线路,站点所属 from LineSite where 站点名称 = '{1}') B " +
" where A.线路 = B.线路 and A.站点所属 = B.站点所属 and "+
" ("
+" select Count(*) as stationCount "
+ " from lineSite, "
+ " (select siteID from lineSite where 线路='A.线路' and 站点名称='{0}' and 站点所属='上行线') A, "
+ " (select siteID from lineSite where 线路='A.线路' and 站点名称='{1}' and 站点所属='上行线')B, "
+ " (select siteID from lineSite where 线路='A.线路' and 站点名称='{0}' and 站点所属='下行线') C, "
+ " (select siteID from lineSite where 线路='A.线路' and 站点名称='{1}' and 站点所属='下行线')D "
+ " where lineSite.线路='A.线路' "
+ " and "
+ " ("
+ " ( A.siteId < B.SiteID "
+ " AND linesite.siteID between A.siteId and B.SiteID"
+ " )"
+ " OR"
+ " ( A.siteId >= B.SiteID "
+ " AND "
+ " linesite.siteID between c.siteId and d.SiteID "
+ " )"
+ " )"
+ ") > 0 ",
"师大", "北国商城");

Access数据库 SQL语句如上所示,这样写有问题啊,求高人~
已经解决了string sql = String.Format("select distinct lineSite.线路 "
+ " from lineSite, "
+ " (select siteID,线路 from lineSite where 站点名称='{0}' and 站点所属='上行线') A, "
+ " (select siteID,线路 from lineSite where 站点名称='{1}' and 站点所属='上行线')B, "
" (select siteID,线路 from lineSite where 站点名称='{0}' and 站点所属='下行线') C, "
" (select siteID,线路 from lineSite where 站点名称='{1}' and 站点所属='下行线')D "
" where a.线路 in ("
" select distinct E.线路 from"
+" (select 线路,站点所属 from LineSite where 站点名称 = '师大') E,"
+" (select 线路,站点所属 from LineSite where 站点名称 = '北国商城') F"
+" where E.线路 = F.线路 and E.站点所属 = F.站点所属"
+" ) AND "
+" a.线路=b.线路 and c.线路=b.线路 and c.线路 = d.线路 "
还是谢谢

这么长的 SQL 语句, 建议在 Access 里面 写成一个 查询。
方便测试、检查。

程序里面 拼接组合 那么长的 SQL
现在很难看出是 SQL 语法有问题? 还是 数据库支持不支持? 还是有逻辑错误。

如果是
where A.线路 = B.线路 and A.站点所属 = B.站点所属 and "+
后面的有问题

那么尝试修改一下 查询里面的 别名

我看到 主查询里面, 有 (SELECT...) A (SELECT...) B
子查询里面也有 (SELECT...) A (SELECT...) B

尝试把 子查询里面的 A 修改为 AA
看看是不是 冲突的原因
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-17
整体上不是很清楚....但是就这一点“线路='E.线路',E.线路里面的结果不唯一”,如果E.线路结果不唯一的话,必须改为 线路 in 'E.线路' 或者 只取'E.线路' 中的一个结果,如用top 1 限定等等
相似回答