SQL 从多个表中检索信息的语句
SQL Statement to retrieve information from multiple tables
我需要一些帮助来构建 SQL 语句。
我只是了解有关 SQL(插入、删除、更改、位置、选择)的基本知识,但从未真正处理过聚合函数或联接。
设置如下:
表 A
- cust_id
- prod_id
- 状态码
- ...
表 B
- cust_id
- land_id
- ...
表 C
- country_id
- ...
表 D
- country_id
- country_code
表 E
- product_id
- country_code1
SQL 语句应输出的内容是:Table A 的 statusCode 为 1、2 或 3 且 country_code == [=86 的所有行=]1.
其中 country_code 可以通过 Table B、C、D 和 country_code1 通过 Table E 获得。
请不要post回答有关数据库结构本身的问题,因为我无权更改它们。
我的方法是这样的,但很明显这是非常错误的,因为我是 SQL 初学者:
SELECT * FROM TableA
INNER JOIN TableB ON TableA.cust_id = TableB.cust_id
INNER JOIN TableC ON TableB.landId = TableC.country_id
INNER JOIN TableE ON TableA.prod_id = TableE.product_id
INNER JOIN TableD ON TableE.country_code1 = TableD.country_code
WHERE statusCode IN (1,2,3)
超出我的想象(未经测试,我不能 100% 确定这就是您的要求):
select a.cust_id, a.prod_id, a.statusCode,
b.land_id,
c.country_id,
d.country_code,
e.product_id
from TableA a, TableB b, TableC c, TableD d, TableE e
where a.cust_id = b.cust_id -- basic joins on common fields
and b.land_id = c.country_id
and b.land_id = d.country_id
and d.country_code = e.country_code1
and a.statusCode in (1, 2, 3) -- finally the statuscode selection
不在我的脑海里。
用FK连接两组表
加入那些团体,
限制超级集
更多精彩
SELECT *
FROM (tableA A INNER JOIN tableB B ON A.cust_id=B.cust_id)
INNER JOIN tableE E ON E.product_id=A.prod_id
INNER JOIN (tableC C INNER JOIN tabldeD D ON D.country_id)
ON D.country_code = E.country_code1
WHERE A.statusCode IN(1,2,3)
我们不必担心国家代码位,因为它在 'join'.
我需要一些帮助来构建 SQL 语句。 我只是了解有关 SQL(插入、删除、更改、位置、选择)的基本知识,但从未真正处理过聚合函数或联接。
设置如下:
表 A
- cust_id
- prod_id
- 状态码
- ...
表 B
- cust_id
- land_id
- ...
表 C
- country_id
- ...
表 D
- country_id
- country_code
表 E
- product_id
- country_code1
SQL 语句应输出的内容是:Table A 的 statusCode 为 1、2 或 3 且 country_code == [=86 的所有行=]1.
其中 country_code 可以通过 Table B、C、D 和 country_code1 通过 Table E 获得。
请不要post回答有关数据库结构本身的问题,因为我无权更改它们。
我的方法是这样的,但很明显这是非常错误的,因为我是 SQL 初学者:
SELECT * FROM TableA
INNER JOIN TableB ON TableA.cust_id = TableB.cust_id
INNER JOIN TableC ON TableB.landId = TableC.country_id
INNER JOIN TableE ON TableA.prod_id = TableE.product_id
INNER JOIN TableD ON TableE.country_code1 = TableD.country_code
WHERE statusCode IN (1,2,3)
超出我的想象(未经测试,我不能 100% 确定这就是您的要求):
select a.cust_id, a.prod_id, a.statusCode,
b.land_id,
c.country_id,
d.country_code,
e.product_id
from TableA a, TableB b, TableC c, TableD d, TableE e
where a.cust_id = b.cust_id -- basic joins on common fields
and b.land_id = c.country_id
and b.land_id = d.country_id
and d.country_code = e.country_code1
and a.statusCode in (1, 2, 3) -- finally the statuscode selection
不在我的脑海里。
用FK连接两组表 加入那些团体, 限制超级集 更多精彩
SELECT *
FROM (tableA A INNER JOIN tableB B ON A.cust_id=B.cust_id)
INNER JOIN tableE E ON E.product_id=A.prod_id
INNER JOIN (tableC C INNER JOIN tabldeD D ON D.country_id)
ON D.country_code = E.country_code1
WHERE A.statusCode IN(1,2,3)
我们不必担心国家代码位,因为它在 'join'.