我有一个我创建的sql语句,我需要将它转换为使用explict连接运算符,以便所有与常量子句进行比较,并且只与常量子句进行比较,显示在查询的where子句中。
我不知道怎么做这个改变,有人能告诉我怎么做这个吗?这就是我所拥有的:
select S.sname
from P, J, S, SPJ
where P.pname = 'Bolt'
and J.city = 'London'
and P.p# = SPJ.p#
and J.j# = SPJ.j#
and S.s# = SPJ.s#;
答案 0 :(得分:1)
如果我理解你,那么你希望将sql89语法转换为内连接。
看起来像这样:
select
S.sname
from
P
inner join SPJ on `P.p#` = `SPJ.p#` and P.pname = 'Bolt'
inner join J on `SPJ.j#` = `J.j#` and J.city = 'London'
inner join S on `SPJ.s#` = `S.s#`
我在加入语法中添加了pname
和city
限制,因为这似乎是您要求的。这些也可以留在where子句中。
另请注意,extended or special characters in column names in mysql(如p#
)必须用反引号括起来。
答案 1 :(得分:1)
你想要这样的东西:
SELECT S.sname
FROM P INNER JOIN SPJ ON P.p#=SPJ.p#
INNER JOIN J ON J.j# = SPJ.j#
INNER JOIN S ON S.s# = SPJ.s#
WHERE P.pname = 'Bolt'
AND J.city = 'London';
用于组合表的条件放在JOIN
子句中,其他条件保留在WHERE
子句中。