SQL Homework - " IN"子查询

时间:2014-05-06 01:27:42

标签: sql ms-access-2007 subquery

是的,这是一个家庭作业问题,但我正在努力做到这一点,我不是要求你为我做这件事,只是指出我正确的方向! :)

所以我有一组关于SQL IN子查询的问题,虽然我理解它的作用但是我在这些情况下应用它时遇到了麻烦。

第一个问题:

  

1)使用In子查询技术列出通过签证或mc支付的客户的客户编号,客户名称和电话。分类   按客户名称。

这个我相信我得到了:

SELECT DISTINCT
   tblCust.CustomerNum, CustomerName, Phone
FROM
   tblCust
INNER JOIN tblOrd ON
   tblCust.CustomerNum=tblOrd.CustomerNum
WHERE
   tblOrd.PayMethod IN ("visa", "mc")
ORDER BY CustomerName;

但下一个对我没有意义:

  

2)使用In子查询技术从tbl列出具有州的客户的客户编号,客户名称和状态   以“co”开头的描述。

我不应该使用LIKE运算符代替IN吗? 到目前为止,我有:

SELECT
   CustomerNum, CustomerName, StateProv
FROM
   tblCust
INNER JOIN tblState ON
   tblCust.StateProv = tblState.StateProv
WHERE 
   tblState.StateProvDesc IN 

我不知道在IN之后要放什么,如果我使用LIKE我会说

  

... StateProvDesc LIKE“co%”

并完成它,但我认为这不是我老师想要的。 最后,第三个问题:

  

3)使用In子查询技术从tblCust列出客户   在该范围内至少有一个订单的客户的名称,国家/地区   $ 90,000- $ 120,000。按国家/地区排序,然后按客户名称排序。

不应该用于一系列数字吗?

感谢你们能想到的任何事情!

顺便使用微软访问

2 个答案:

答案 0 :(得分:2)

我认为教授要你做的是在IN子句中编写一个子查询。您实际上可以在IN()中放置一个select语句,如下所示:

SELECT
   CustomerNum, CustomerName, StateProv
FROM
   tblCust
WHERE StateProv IN(SELECT StateProv FROM tblState WHERE StateProvDesc LIKE 'co%')

答案 1 :(得分:1)

我认为教师希望您将查询更改为使用... IN (SELECT ... FROM ...)样式而不是内部联接。

您可以从说明的背面处理这些查询,例如:

  

......以“co”开头的状态描述。

-- Inner query
SELECT StateProv
FROM tblState
WHERE StateProvDesc LIKE `co%`

现在你有了这个,你可以编写外部查询:

  

从tbl列出客户编号,客户名称和状态,以便...

SELECT
   CustomerNum, CustomerName, StateProv
FROM
   tblCust
WHERE tblCust.StateProv IN (
-- Your inner query goes here
)