Oracle Объект базы данных SQL запрос - PullRequest
0 голосов
/ 20 января 2020

В Oracle База данных. Есть две таблицы объектов SHOPS(S_NUM, S_NAME, TEL). И PRODUCTS(P_NUM, P_NAME, P_VAL, P_PRICE, SHOP_NUM). Как написать в Oracle Object SQL языковой запрос, чтобы узнать, сколько есть ПРОДУКТОВ в магазине с именем "SHOP1"?

CREATE OR REPLACE TYPE T_SHOP as Object (
   S_NUM Integer,
   S_NAME Varchar(30),
   TEL Varchar2(300)  
);

CREATE OR REPLACE TYPE T_PRODUCT as Object (
   P_NUM Integer,
   P_VAL Integer,
   P_PRICE Number,
   SHOP_NUM INteger,
   P_NAME Varchar(30),
   TEL Varchar2(300)  
);

CREATE TABLE SHOPS of T_SHOP;
CREATE TABLE PRODUCTS of T_PRODUCT;

Shops:
    +---------------------------------------------------------------+
    |            S_NUM S_NAME                         TEL           |
    +---------------------------------------------------------------+
    |          0 Shop1                          +371256215215       |
    |          1 Shop2                          +37125623232323232  |
    |          2 Shop3                          +37125623223323     |
    +---------------------------------------------------------------+
Products:
    +-----------------------------------------------------------------------------------------+
    |          P_NUM      P_VAL    P_PRICE   SHOP_NUM P_NAME                         TEL      |
    +-----------------------------------------------------------------------------------------+
    |          0          1         10          1 SIRI                           332323233232 |
    |          1          1         11          1 SIRI2                          332323233232 |
    +-----------------------------------------------------------------------------------------+

Ответы [ 3 ]

2 голосов
/ 20 января 2020

Что мне нужно, так это:

 SELECT count(p.p_num) FROM 
 SHOPS H 
 JOIN PRODUCTS P ON H.S_NUM = P.SHOP_NUM
 WHERE S_NAME = 'Shop2'
 group by P.SHOP_NUM;

+----------------+
| COUNT(P.P_NUM) |
+----------------+
| -------------- |
|              2 |
+----------------+
1 голос
/ 20 января 2020

Предполагая, что S_NUM и SHOP_NUM относятся к одним и тем же значениям, вы можете использовать JOIN, чтобы получить представление, отфильтрованное по S_NAME. Что-то вроде:

SELECT
    H.S_NUM
    , H.S_NAME
    , H.TEL
    , P.P_NAME
    , P.P_PRICE
FROM SHOPS H
JOIN PRODUCTS P ON H.S_NUM = P.SHOP_NUM
WHERE S_NAME = 'SHOP1'
1 голос
/ 20 января 2020

Попробуйте с этим:

select count(distinct P.P_NUM) 
from SHOPS S
left join PRODUCTS p on P.SHOP_NUM = S.S_NUM 
Where S.S_NAME = 'SHOP1'
group by P.SHOP_NUM

Маленький ДЕМО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...