SQL 从多个表中检索信息的语句

SQL Statement to retrieve information from multiple tables

我需要一些帮助来构建 SQL 语句。 我只是了解有关 SQL(插入、删除、更改、位置、选择)的基本知识,但从未真正处理过聚合函数或联接。

设置如下:

表 A

表 B

表 C

表 D

表 E

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'.