我正在嘗試從中減去 count 的routeid值capacity。它應該是 350 - 1,我運氣不好,代碼如下
(SELECT CAPACITY
FROM PLANE
WHERE SERIALNO = 'FH-FBT') -
(SELECT COUNT(ROUTEID)
FROM RESERVATION
WHERE ROUTEID = 'FBN001')
uj5u.com熱心網友回復:
查詢結果是一個表。在您的情況下,您有兩個查詢結果,并且表由一行和一列組成。您從另一個結果集中減去一個結果集。即你有一個陳述句是dataset - datasetor,因為這些是標量查詢value - value。但是,DBMS 不知道如何處理它,因為您沒有告訴它選擇結果。
容量為 350 且預留計數為 50,您有這樣的陳述句:
350 - 50
但在標準 SQL 中,正確的陳述句應該是這樣的:
select 350 - 50;
由于 Oracle 總是需要一個表來選擇:
select 350 - 50 from dual;
整個查詢:
SELECT
(SELECT capacity FROM plane WHERE serialno = 'FH-FBT') -
(SELECT COUNT(routeid) FROM reservation WHERE routed = 'FBN001')
FROM DUAL;
選擇結果的另一個選項是交叉連接兩個值/子查詢結果:
SELECT capacity - reserved
FROM
(SELECT capacity FROM plane WHERE serialno = 'FH-FBT')
CROSS JOIN
(SELECT COUNT(routeid) AS reserved FROM reservation WHERE routed = 'FBN001');
uj5u.com熱心網友回復:
如果我正確理解你想要什么,你可以這樣做:
SELECT CAPACITY -(SELECT COUNT(ROUTEID)
FROM RESERVATION
WHERE ROUTEID = 'FBN001')
FROM PLANE
WHERE SERIALNO = 'FH-FBT'
或者
SELECT capacity -reserved_count
FROM PLANE
WHERE SERIALNO = 'FH-FBT' join
(SELECT COUNT(ROUTEID)reserved_count
FROM RESERVATION
WHERE ROUTEID = 'FBN001')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530317.html
標籤:sql甲骨文
上一篇:具有獨立反轉的Java排序
