Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用左联接和分组依据时显示第二个子表值_Sql_Oracle - Fatal编程技术网

Sql 使用左联接和分组依据时显示第二个子表值

Sql 使用左联接和分组依据时显示第二个子表值,sql,oracle,Sql,Oracle,我有三个表类别、产品和Sku,它们有父子关系 我想要第一个产品记录,其中产品id的所有sku必须与sku表中的产品id相匹配,而类别id的所有产品必须与产品表中的类别id相匹配 现在这里的问题是我想在这里显示sku id和类别id。有可能吗 以下是查询: SELECT cat.category_id FROM Category cat LEFT JOIN( SELECT product.product_id FROM Product product LEFT JOIN Sku sku

我有三个表类别、产品和Sku,它们有父子关系

我想要第一个产品记录,其中产品id的所有sku必须与sku表中的产品id相匹配,而类别id的所有产品必须与产品表中的类别id相匹配

现在这里的问题是我想在这里显示sku id和类别id。有可能吗

以下是查询:

SELECT cat.category_id FROM Category cat
LEFT JOIN(
  SELECT product.product_id
  FROM Product product
  LEFT JOIN Sku sku ON product.sku_id = sku.sku_details_id
  GROUP BY product.product_id
  HAVING COUNT(product.product_id) = COUNT(sku.sku_details_id)
  ) childProduct ON cat.product_id = childProduct.product_id
  GROUP BY cat.category_id
  HAVING COUNT(cat.category_id) = COUNT(childProduct.product_id)
样本数据

结果应该是

试试这个

表架构:

SQL查询:

输出:


请从表中发布一些记录also@HiteshRakhadia,不客气。如果你发现这个答案很有用并且解决了你的问题,那么接受这个答案。这将帮助某人。嗨,我得到了sku id,但我也得到了不必要的类别id。因为如果我按值添加另一个组,那么得到的结果是change@HiteshRakhadia,检查更新的答案。希望这是你想要的。@HiteshRakhadia,你检查了吗。它是否有用?
Category 

cat1 prd1 prd2
cat2 prd3

Product
prd1 sku1 sku2 sku3 sku4 : cat1
prd2 sku1 sku2 sku3 sku4 : cat1
prd3 sku1 sku4 : cat2

Sku
sku1 
sku2
sku3
sku4
cat1,sku1,sku2,sku3,sku4
CREATE TABLE Category (category_id VARCHAR(10),Product_Id VARCHAR(10));
INSERT INTO Category VALUES('cat1','prd1');
INSERT INTO Category VALUES('cat1','prd2');
INSERT INTO Category VALUES('cat2','prd3');

CREATE TABLE Product (Product_Id VARCHAR(10),sku_id VARCHAR(10));
INSERT INTO Product VALUES('prd1','sku1');
INSERT INTO Product VALUES('prd1','sku2');
INSERT INTO Product VALUES('prd1','sku3');
INSERT INTO Product VALUES('prd1','sku4');
INSERT INTO Product VALUES('prd2','sku1');
INSERT INTO Product VALUES('prd2','sku2');
INSERT INTO Product VALUES('prd2','sku3');
INSERT INTO Product VALUES('prd2','sku4');
INSERT INTO Product VALUES('prd3','sku1');
INSERT INTO Product VALUES('prd3','sku4');

CREATE TABLE Sku (sku_details_id VARCHAR(10));
INSERT INTO Sku VALUES('sku1'); 
INSERT INTO Sku VALUES('sku2');
INSERT INTO Sku VALUES('sku3');
INSERT INTO Sku VALUES('sku4');
SELECT cat.category_id,P.sku_id
FROM Category cat
INNER JOIN(
  SELECT product.product_id
  FROM Product product
  INNER JOIN Sku sku ON product.sku_id = sku.sku_details_id
  GROUP BY product.product_id
  HAVING COUNT(DISTINCT product.sku_id) = (SELECT COUNT(DISTINCT sku_details_id) FROM Sku)
  ) childProduct ON cat.product_id = childProduct.product_id
  JOIN Product P ON P.product_id = cat.product_id
  GROUP BY cat.category_id,P.sku_id
| CATEGORY_ID | SKU_ID |
|-------------|--------|
|        cat1 |   sku1 |
|        cat1 |   sku4 |
|        cat1 |   sku3 |
|        cat1 |   sku2 |