考试语法的的问题

Home Home
引用 | 编辑 chris710908
2008-06-21 23:44
楼主
推文 x0
想请教各位~在做考题的时候发现sql语法的问题

题目有两个关联如下


供应商(供应商代号.供应商名称,城市)

专案提供零件(供应商代号,零件代号,专案代号,数量)


题目:找出所有参与j1或j2专案的供应商名称

参考解答:

select 供应商名称
from 供应商 s
where s.供应商代号 IN
(
select 供应商代号
from 专案供应零件 p
where p.专案代号 IN('j1','j2')

);


个人解答:

select 供应商名称
from 供应商 s, 专案供应零件, p
where s.供应商代号=p.供应商代号
and p.专案代号 IN ('j1','j2');

请问我的解答这样写可以吗?
我觉得参考解答好像写的太复杂?
请教高手~谢谢

献花 x0
引用 | 编辑 月光
2008-06-22 00:13
1楼
  
真复杂...请先说出您是要捞两个不同资料表中的资料吗?还是只有一个资料表?

献花 x0
引用 | 编辑 chris710908
2008-06-22 00:20
2楼
  
是两个资料表

因为我要列出供应商名称

但是专案这个栏位在专案提供零件这个资料表中

所以要找出所有参与j1或j2专案的供应商名称

就是列出有参与这两个其中一个专案的供应商

献花 x0
引用 | 编辑 月光
2008-06-22 00:26
3楼
  
这是我的解法...与你的差不多^^

SELECT * FROM 资料表1名称 s LEFT JOIN 资料表2名称 p ON p.供应商代号栏位名称=s.供应商代号栏位名称 WHERE 专案代号栏位名称 IN('j1','j2')

献花 x0
引用 | 编辑 chris710908
2008-06-22 00:31
4楼
  
原来是如此~版大是先join起来~where那边就比较精简了
那表示为必要按照解答的写对吧
感觉怪怪的

感谢版大喔!!!真迅速~

献花 x0
引用 | 编辑 月光
2008-06-22 00:34
5楼
  
下面是引用chris710908于2008-06-22 00:31发表的 :
原来是如此~版大是先join起来~where那边就比较精简了
那表示为必要按照解答的写对吧
感觉怪怪的

感谢版大喔!!!真迅速~

这就是写程式好玩之处啦...没有两个人写的程式会一模一样,要达到同样效果有人可以写到很精简,有人却绕了一大圈,永远无标准解答...所以大家一起努力吧^^

献花 x0
引用 | 编辑 chris710908
2008-06-22 00:53
6楼
  
感谢版主 表情
我会加油的!

献花 x0