考試語法的的問題

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