首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CF/SQL & QofQ -如何连接记录

CF/SQL & QofQ -如何连接记录
EN

Stack Overflow用户
提问于 2010-12-13 05:31:22
回答 2查看 416关注 0票数 0

在Coldfusion中,我有两个数据源: dwq和prq。我在dwq中查询一个news_id,它将与prq中的pageid进行比较。

代码语言:javascript
复制
<cfquery name="dwq" datasource="cu_dsn">
 SELECT  NEWS_ID 
 FROM  dw 
</cfquery>

<cfquery name="prq" datasource="commonspot">
 SELECT 
     PAGEID, 
        TITLE
 FROM pr
 WHERE (PUBLISH ='Yes' OR PUBLISH=NULL)
</cfquery>

<cfquery name="join" dbtype="query">
 SELECT
        prq.PAGEID, 
        prq.TITLE
     dwq.NEWS_ID
 FROM prq, dwq
 where prq.pageid <> dwq.news_id
</cfquery>

我需要做的是选择prq数据源中与news_id不匹配的所有记录。因为我不能在QofQ中使用JOIN,所以我希望用WHERE子句替换,但是SQL多次返回一条记录(等于dwq中的记录数)。

有没有人能帮我找出合适的SQL语句?谢谢你!!

EN

回答 2

Stack Overflow用户

发布于 2010-12-13 06:24:51

如果两个表dw和pr都可以通过相同的数据源获得(您的问题表明它们不是),那么Spiny Norman的第一种方法是可行的。

如果不是,您可以执行类似的操作,将第二个查询(prq)替换为:

代码语言:javascript
复制
<cfquery name="prq" datasource="commonspot">
 SELECT 
     PAGEID, 
     TITLE
 FROM pr
 WHERE (PUBLISH ='Yes' OR PUBLISH=NULL)
     AND PAGEID NOT IN (#valuelist(dwq.news_id)#)
</cfquery>

这样你就不需要第三个查询(join)了。但是,对于dw中的大量行,我不确定这会有多好,而且您的DBMS可能会对它在IN中接受的it数有限制。

票数 1
EN

Stack Overflow用户

发布于 2010-12-13 06:11:35

嗯,我对CF或QofQ一无所知,但是在常规的SQL中,要从prq中获取与某个news_id不匹配的所有记录,您可以使用:

代码语言:javascript
复制
SELECT
    prq.PAGEID,
    prq.TITLE
FROM prq
WHERE prq.pageid <> {dwq.news_id} -- That is, insert the proper news_id here in the correct coldfusiony way

如果你想获得所有不匹配任何dwq.news_id的prq(我想是所有不是新闻页面的页面),使用:

代码语言:javascript
复制
SELECT
    prq.PAGEID,
    prq.TITLE
FROM prq
WHERE prq.pageid NOT IN (
    SELECT NEWS_ID
    FROM dwq
)

哈,祝你好运。也许我稍后会尝试了解如何在CF中做到这一点。当你发现如何让它工作时,一定要回帖!

编辑:啊,我们开始吧:如果你想遍历查询1中的news_ids并获得所有不是该新闻id的页面id(可能是指向其他项目的链接列表?),使用:

代码语言:javascript
复制
<cfloop query="dwq">
    <cfquery name="prq" datasource="commonspot">
        SELECT 
            PAGEID, 
            TITLE
         FROM pr
         WHERE (PUBLISH ='Yes' OR PUBLISH=NULL)
           AND PAGEID <> #dwq.NEWS_ID#
    </cfquery>

    <cfdosomethingwithquery query="prq">
        ...
    </cfdosomethingwithquery>
</cfloop>

我认为。不过,这可能会使用比必要多得多的查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4424153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档