Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-ALL,包括所有值_Sql_Sap Iq - Fatal编程技术网

SQL-ALL,包括所有值

SQL-ALL,包括所有值,sql,sap-iq,Sql,Sap Iq,我有两张桌子: create table xyz (campaign_id varchar(10) ,account_number varchar) Insert into xyz values ( 'A', '1'), ('A', '5'), ('A', '7'), ('A', '9'), ('A', '10'), ( 'B', '2'), ('B', '3'), ( 'C', '1'), ('C', '2'), ('C', '3'), ('C', '5'), (

我有两张桌子:

create table xyz
(campaign_id varchar(10)
,account_number varchar)

Insert into xyz
values ( 'A', '1'), ('A', '5'), ('A', '7'), ('A', '9'), ('A', '10'),
       ( 'B', '2'), ('B', '3'),
       ( 'C', '1'), ('C', '2'), ('C', '3'), ('C', '5'), ('C', '13'), ('C', '15'),
       ('D', '2'), ('D', '9'), ('D', '10')


create table abc
(account_number varchar)

insert into abc
values ('1'), ('2'), ('3'), ('5')
现在,我想写一个查询,其中所有四个帐号
1、2、3、5
都包含在
Campaign\u id

答案是C

[我的目标是查找包含账号1、2、3和5的活动代码。此条件仅由活动代码C满足。]


我尝试在中使用
所有
,但都不起作用。你能帮忙吗。

我想你想要的是一个内在的结合。从你的问题中不确定你想从哪一个方面获得数据。然而,这应该给你一个很好的线索,如何继续,以及在文档中锁定哪些关键字

SELECT a.*
FROM xyz a
INNER JOIN abc b ON b.account_number = a.account_number;
编辑:

似乎我误解了原来的问题。。很抱歉要想得到你想要的,你只需执行以下操作:

SELECT  campaign_id
FROM    xyz 
WHERE   account_number IN ('1', '2', '3', '5')
GROUP BY campaign_id
HAVING  COUNT(DISTINCT account_number) = 4;
如果您想进一步研究,这称为关系划分

SELECT campaign_id
FROM (
    SELECT campaign_id, COUNT(*) AS c, total_accounts
    FROM xyz
    JOIN abc ON xyz.account_number = abc.account_number
    CROSS JOIN (SELECT COUNT(*) AS total_accounts
                FROM abc) AS x
    GROUP BY campaign_id
    HAVING c = total_accounts) AS subq


注意:t-sql实施

这将列出在abc
中拥有任何账号的活动,而不仅仅是那些拥有所有账号的活动。我猜我误解了这个问题,听起来他只是想找到加入者。从你的回答来看,我的假设是错误的。对不起,如果我听起来很困惑的话。我的目标是找到包含账号1、2、3和5的活动代码。只有活动代码C才能满足此条件。我不知道如何为其编写查询。@M.Scherzer这就是为什么我们喜欢海报提供所需的输出,这有助于澄清类似情况。他说预期结果只是
C
,但您的查询返回
A
B
C
、和
D
。是的,我得到了正确的SQL,我认为它很好而且简洁,不需要任何连接。谢谢您,巴默。但这给了我一个奇怪的结果。它给出了两个空白列。一个活动id,另一个是C。我修改了查询,将所有工作移动到子查询中,只返回
Campaign\u id
列。如演示所示,它显然在MySQL中工作。如果您使用的是不同的DBMS,则可能需要调整语法。请用您使用的DBMS标记您的问题,以确保您得到适当的答案。我不熟悉Sybase,因此不知道其语法有何不同。它在sqlfiddle.com上也不可用,所以我甚至不能用它来测试我的答案。你必须从其他人那里得到进一步的帮助。给空白的广告!没注意到是sybase iq。我的实现是用t-sql实现的。请尝试进一步充实您的答案。仅仅发布一个代码块而没有任何解释或上下文是不好的。
select xyz.campaign_id
from xyz
join abc
on xyz.account_number = abc.account_number
group by xyz.campaign_id
having count(xyz.campaign_id) = 
(select count(account_number) from abc);