У меня есть эти таблицы в моей базе данных
SQL> desc finance_orders;
Name Null? Type
----------------------------------------- -------- --------------
ORDER_NUM NOT NULL VARCHAR2(10)
CLIENT_ID NUMBER(8)
FINANCE_NAME VARCHAR2(32)
FINANCE_AMMOUNT NUMBER(10)
IN_HMY NUMBER(3)
ORDER_DATE DATE
ORDER_STATUS VARCHAR2(32)
SQL> desc finance_types;
Name Null? Type
----------------------------------------- -------- --------------
FIN_NAME NOT NULL VARCHAR2(32)
FIN_MIN NUMBER(10)
FIN_MAX NUMBER(10)
FIN_APR NUMBER(5,2)
MGMT_COST NUMBER(10)
DOUBLE_SAL NUMBER(5)
SQL> desc client_accounts;
Name Null? Type
----------------------------------------- -------- --------------
CLIENT_ID NUMBER(8)
CARD_NUM NOT NULL NUMBER(13)
CVC NUMBER(3)
ISS_DATE DATE
EXP_DATE DATE
SAL NUMBER(10)
BALANCE NUMBER(10)
Две таблицы уже заполнены, третья пуста.
SQL> SELECT * FROM CLIENT_ACCOUNTS;
CLIENT_ID CARD_NUM CVC ISS_DATE EXP_DATE SAL BALANCE
---------- ---------- ---------- --------- --------- ---------- ----------
10000000 6.6028E+12 113 12-DEC-18 11-DEC-21 15000
10001500 6.4924E+12 461 12-DEC-18 11-DEC-21 15000
SQL> SELECT * FROM FINANCE_TYPES;
FIN_NAME FIN_MIN FIN_MAX FIN_APR MGMT_COST DOUBLE_SAL
-------------------------------- ---------- ---------- ---------- ---------- ----------
CAR 45000 500000 4.85 2500 25
HOME 120000 250000000 12.7 8500 60
PERSONAL 2000 180000 3.58 500 15
Итак, я отправил запрос, используя count(*)
, чтобы проверить, прежде чем я вначале вставлю любое значение в таблицу finance_orders
.Просто отметьте, а не добавьте.
Это код:
1 SELECT Count(*)
2 FROM CLIENT_ACCOUNTS CA , FINANCE_TYPES FT ,FINANCE_ORDERS FO
3 WHERE
4 FO.CLIENT_ID= &CLIENT_ID --here i use this to check
5 AND
6 FO.FINANCE_NAME = '&FIN_NAME' --here i use this to check
7 AND
8 FO.CLIENT_ID = CA.CLIENT_ID
9 AND
10 FO.FINANCE_NAME = FT.FIN_NAME
11 AND
12 ((((CA.SAL)*(FT.DOUBLE_SAL)) BETWEEN FT.FIN_MIN AND FT.FIN_MAX) OR (((CA.SAL)*(FT.DOUBLE_SAL)) > FT.FIN_MAX) )
SQL> /
Enter value for client_id: 10000000
old 4: FO.CLIENT_ID= &CLIENT_ID
new 4: FO.CLIENT_ID= 10000000
Enter value for fin_name: PERSONAL
old 6: FO.FINANCE_NAME = '&FIN_NAME'
new 6: FO.FINANCE_NAME = 'PERSONAL'
COUNT(*)
----------
0
Я использую «& input» как способ проверки, извините, count(*)
не сможетверните «1».
Вы можете видеть, что клиент «10000000», его зарплата «15000 $», а также его тип и минимум финансов, минимальные и максимальные значения, а также double_sal выполнены и имеют значение true, поэтому count(*)
должно быть равно 1.
Таблица пуста.Если count(*)
не работает с пустыми таблицами, то что бы это сделать?триггеры?