引用 | 编辑
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
|
引用 | 编辑
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发表的 : 这就是写程式好玩之处啦...没有两个人写的程式会一模一样,要达到同样效果有人可以写到很精简,有人却绕了一大圈,永远无标准解答...所以大家一起努力吧^^ x0 |
引用 | 编辑
chris710908
2008-06-22 00:53 |
6楼
▲ |
感谢版主
我会加油的! x0 |