Oracle统计一张主表和四个子表,通过主表id相关联,子表都是主表id字段,现在统计子表相应主表id的数量,请写出SQL
时间: 2023-07-16 13:14:27 浏览: 52
可以使用子查询和聚合函数COUNT()来实现:
```
SELECT
main.id,
COUNT(sub1.id) AS sub1_count,
COUNT(sub2.id) AS sub2_count,
COUNT(sub3.id) AS sub3_count,
COUNT(sub4.id) AS sub4_count
FROM
main
LEFT OUTER JOIN sub1 ON main.id = sub1.main_id
LEFT OUTER JOIN sub2 ON main.id = sub2.main_id
LEFT OUTER JOIN sub3 ON main.id = sub3.main_id
LEFT OUTER JOIN sub4 ON main.id = sub4.main_id
GROUP BY
main.id;
```
以上SQL语句中,我们以主表main为基础,使用左外连接关联四个子表,然后使用聚合函数COUNT()统计每个子表相应主表id的数量,并将结果按主表id分组。
相关问题
Oracle中创建一张表 字段为 id ,name,time id为自增序列并且是主键
好的,这个问题涉及Oracle数据库中的创建表操作,以下是创建表的SQL语句:
CREATE TABLE 表名
(
id NUMBER(10) PRIMARY KEY,
name VARCHAR2(50),
time DATE
);
其中id字段为自增序列并且是主键。
Oracle查询主表,带出多行子表内容
可以使用Oracle的子查询或连接查询来实现查询主表并带出多行子表内容。
使用子查询:
```
SELECT *
FROM main_table
WHERE main_table_id IN (
SELECT main_table_id
FROM sub_table
WHERE sub_table_column = 'value'
);
```
使用连接查询:
```
SELECT *
FROM main_table
LEFT JOIN sub_table ON main_table.main_table_id = sub_table.main_table_id
WHERE sub_table.sub_table_column = 'value';
```
这些查询将返回主表和与子表相关联的所有行,只需根据需要从结果中选择所需的列即可。