我需要一些帮助来构建一个SQL语句。 我只掌握有关SQL的基本知识(插入,删除,更改,在哪里,选择),但从来没有真正处理聚合函数或连接。
所以这是设置:
表A
表B
表C
表D
表E
SQL语句应输出的内容是:表A中statusCode为1或2或3的所有行以及country_code == country_code1。
其中country_code可以通过表E从表B,C,D和country_code1获得。
请不要发布有关数据库结构本身的答案,因为我无权更改它们。
我的方法是这样,但很明显,因为我是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)
答案 0 :(得分:1)
脱离我的头顶。
用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'。
答案 1 :(得分:0)
脱离我的头顶(未经测试,我并非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