【发布时间】:2011-03-11 22:25:57
【问题描述】:
大家好,我对 SQL 中的子查询有些问题。我正在使用 MS Access 2010 并编写 sql。
SELECT vak.Name, COUNT(vak.amount) AS [First], COUNT(vak2.amount2) AS [Second]
FROM
(SELECT kon.Name, (Count(icv.CV_ID) / Count(icv.CV_ID)) AS amount
FROM (kon INNER JOIN v ON kon.K_ID = v.K_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID
GROUP BY v.Vak_ID, kon.Name) AS vak,
(SELECT kon.Name, COUNT(v.Vak_ID) AS amount2
FROM (kon INNER JOIN v ON kon.K_ID = v.K_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID
GROUP BY kon.Name) AS vak2
GROUP BY vak.Konkursa_Nosaukums
当我在数据表视图中检查它时,两列是相同的。 “第一”中有 6 行,值分别为 12、12、6、12、6、6。“第二”列中的值相同。当我将此代码分成两部分并进行 2 个新查询进行测试时,“第一”列显示值 2、2、1、2、1、1,第二个查询的值为 3、3、1、2、1, 1.这两列分开时都有正确的值,但是当我将它们组合在一起时,一些未知值看起来像 12(我不知道它在哪里取像 12 这样的数字)。当我放线时
WHERE vak.amount=vak2.amount2 在最后一行之前它在两列中显示 2,2,1,2,1,1。我想它只需要第一个子查询或其他东西。
如何正确地制作这些子查询,使它们显示的值与单独编写时相同?
【问题讨论】:
-
您能否发布您已取出的示例数据和单个子查询......
-
@Nitin Midha 这里是两个单独的查询。第一个: SELECT vak.Name, COUNT(vak.skaits) as [Column Name] FROM (SELECT kon.Name, (Count(icv.CV_ID) / Count(icv.CV_ID)) AS amount FROM (kon INNER JOIN v ON kon.Kon_ID = v.Kon_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID GROUP BY v.Vak_ID, kon.Name) AS vak GROUP BY vak.Name 第二个:SELECT kon.Name, COUNT(v.Vak_ID) AS amount2 FROM Kon INNER JOIN v ON kon.Kon_ID = v.Kon_ID GROUP BY Kon.Name 第一个在 COUNT 列显示 2,2,1,2,1,1,第二个显示 3,3,1,2,1,1在 COUNT 列中
-
我认为您缺少加入条件,并且在适当的组中具有...如果有意义,请查看下面的答案...