我在最初为某些Access表单执行的以下查询时遇到了一些问题:
SELECT qry1.TCKYEAR AS Yr, COUNT(qry1.SID) AS STUDID, qry1.SID AS MID, table_tckt.tckt_tick_no
FROM table_tckt INNER JOIN qry1 ON table_tckt.tckt_SID = qry1.SID
GROUP BY qry1.TCKYEAR, qry1.SID, table_tckt.tckt_tick_no
HAVING (((table_tckt.tick_no)=[forms]![frmNAME]![cboNAME]));
SELECT table_tckt.sid, FORMAT([tckt_iss_date], 'yyyy') AS TCKYEAR, table_tckt.tckt_tick_no, table_tckt.licstate
FROM table_tckt
WHERE (((table_tckt.licstate)<>"NA"));
我不再使用Access,而是使用表单的JSP。我需要以某种方式将这两个查询组合成一个查询,或者找到另一种方法让查询“查询”另一个查询。
答案 0 :(得分:1)
以下是在SQL Server中执行此操作的最快方法。我不知道你使用什么作为后端,但也许它会指出你正确的方向。
它基本上使用with {}中的语句来创建一个可以查询的名为sql1的内存表。
with
{
SELECT table_tckt.sid,
FORMAT([tckt_iss_date], 'yyyy') AS TCKYEAR,
table_tckt.tckt_tick_no,
table_tckt.licstate
FROM table_tckt
WHERE (((table_tckt.licstate)<>"NA"));
} as sql1
SELECT qry1.TCKYEAR AS Yr,
COUNT(qry1.SID) AS STUDID,
qry1.SID AS MID,
table_tckt.tckt_tick_no
FROM table_tckt
INNER JOIN qry1 ON table_tckt.tckt_SID = qry1.SID
GROUP BY qry1.TCKYEAR, qry1.SID, table_tckt.tckt_tick_no
HAVING (((table_tckt.tick_no)=@YourVariable));