我有以下问题: 我想指望在一个表中的数据,算上第二表数据和having子句比较countings,并且只显示具有相同countings 类似的东西行:2X COUNT在HAVING子句
SELECT bla
FROM T1 t1 JOIN T2 t2
ON t1.id = t2.id
HAVING COUNT(counted data from table1) = COUNT(counted data from table2)
你有什么想法吗? 干杯
我有以下问题: 我想指望在一个表中的数据,算上第二表数据和having子句比较countings,并且只显示具有相同countings 类似的东西行:2X COUNT在HAVING子句
SELECT bla
FROM T1 t1 JOIN T2 t2
ON t1.id = t2.id
HAVING COUNT(counted data from table1) = COUNT(counted data from table2)
你有什么想法吗? 干杯
标准SQL:
SELECT t1.bla, t1.id, t1.counter, t2.counter
FROM (SELECT t1.bla, t1.id, COUNT(counted_data_from_t1) AS counter
FROM t1
GROUP BY t1.bla, t1.id
) AS t1
JOIN (SELECT t2.id, COUNT(counted_data_from_t2) AS counter
FROM t2
GROUP BY t2.id
) AS t2
ON t1.id = t2.id AND t1.counter = t2.counter
的Oracle SQL(因为Oracle不表别名之前像):
SELECT t1.bla, t1.id, t1.counter, t2.counter
FROM (SELECT t1.bla, t1.id, COUNT(counted_data_from_t1) AS counter
FROM t1
GROUP BY t1.bla, t1.id
) t1
JOIN (SELECT t2.id, COUNT(counted_data_from_t2) AS counter
FROM t2
GROUP BY t2.id
) t2
ON t1.id = t2.id AND t1.counter = t2.counter
你只需要决定在哪里bla
来自;我提名t1
。我假设对于任何给定的值t1.id
,存在单个值t1.bla
。如果没有,那么你需要更清楚地解释你正在计算的内容以及各个列的位置,以及表格的关键字。
更新:抱歉,不注意到Oracle标记并给出无效的Oracle语法。
我这样做了,但我有一个错误(第5行,第9列,SQL命令未正确结束) 'SELECT jezyki.pseudo_wampira,sprawnosc.counter FROM(SELECT pseudo_wampira,COUNT(*)AS counter FROM Jezyki_obce_w GROUP BY pseudo_wampira )AS jezyki JOIN(SELECT pseudo_wampira,sprawnosc,COUNT(*)AS计数器 FROM Sprawnosci_w GROUP BY pseudo_wampira,sprawnosc )AS sprawnosc ON(jezyki.pseudo_wampira = sprawnosc.pseudo_wampira和jezyki.counter = sprawnosc.counter)' 你看到那个错误吗? – robocoder 2012-04-10 16:55:24
对不起,我在编写评论时遇到了问题。代码有像你这样的表;第五行是“)AS jezyki” – robocoder 2012-04-10 16:56:04
@robocoder - Oracle不允许你为表别名使用'AS',尽管它为列别名提供了服务。尝试删除那个单词,所以第5行变成了')t1'和第9行't2'。 – 2012-04-10 17:18:08
WITH jezyki as
(SELECT pseudo_wampira, COUNT(*) AS counter
FROM Jezyki_obce_w
GROUP BY pseudo_wampira
)
,sprawnosc as
(SELECT pseudo_wampira, sprawnosc, COUNT(*) AS counter
FROM Sprawnosci_w
GROUP BY pseudo_wampira, sprawnosc
)
SELECT jezyki.pseudo_wampira, sprawnosc.counter
FROM jezyki,sprawnosc
WHERE jezyki.pseudo_wampira = sprawnosc.pseudo_wampira
AND jezyki.counter = sprawnosc.counter
计数什么?从T1中选择count(*)将返回总行数,并且不能将其应用于检查其他表中的行,您能否详细说明一下? – Habib 2012-04-10 16:13:54