这个sql查询是否正确?

问题描述:

使用下面 http://i.imgur.com/rIMgFZC.png这个sql查询是否正确?

如何显示,通过女员工谁是在3级,4级加工玩具的名字,和第5级(不是1级或2)和所有的玩具名单表名称与商店的邮编10005. 使用联合书写。

SELECT Toy_name 
FROM Toy T 
INNER JOIN hire_transaction H on T.toy_id = H.toy_id 
INNER JOIN Employee E on H.E_id = E.E_id 
WHERE E_Sex = ‘F’ 
AND E_Level between ‘3’ and ‘5’ 
UNION 
SELECT Toy_name, Store_id 
FROM Toy T, Store S 
WHERE T.Store_ID IN(
SELECT Store_ID 
FROM STORE S 
WHERE Store_Postcode = ‘10005’); 

这是我的尝试。我对么?

+2

您的查询不会工作,因为当您将查询与union/union全部组合在一起时,它必须具有相同数量的列..从选择联盟中删除商店 – TheGameiswar

SELECT Toy_name 
FROM Toy T 
INNER JOIN hire_transaction H on T.toy_id = H.toy_id 
INNER JOIN Employee E on H.E_id = E.E_id 
WHERE E_Sex = 'F' 
AND E_Level between 3 and 5 
UNION 

SELECT Toy_name 
FROM Toy T 
WHERE T.Store_ID IN(
SELECT Store_ID 
FROM STORE S 
WHERE Store_Postcode = '10005'); 

当使用unions时,distinct选项必须具有相同的列数和类型。

删除第二个查询中不必要的隐含join

您使用了错误的引号,插入了单引号。

+0

感谢不知道联盟使用要求 – jackblack

+0

查询现在提供正确的结果? :)然后请将答案标记为已接受。同样对于你的下一个问题,如果你直接给出信息,如果有错误消息,你的表结构如何看,你期望得到什么结果以及你得到的结果是什么,认为会更容易。 – Philipp