請問一個SQL語法問題 |
尚未結案
|
selina
一般會員 發表:39 回覆:64 積分:20 註冊:2002-12-05 發送簡訊給我 |
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
妳的a,b,c 的table 裡面的 name 及 address
不知道資料是否是相同的
如果資料是不一樣 建議妳取不一樣的欄位名稱較好分別
如果資料是一樣 則 c 的 table 就是多餘的
這裡同樣連結 a,b,c
參考看看
(sql server)
select a.name,a.class,a.lid,a.did,b.address as baddress
,b.name as bname, c.name as cname , c.address as caddress
from A a
left join B b on ( a.lid = b.lid )
left join C c on ( a.did = c.did )
where a.class = A (ORACLE)
select a.name,a.class,a.lid,a.did,b.address as baddress
,b.name as bname, c.name as cname , c.address as caddress
from A a , B b,C c
where (a.lid = b.lid( ))
and (a.did = c.did( ))
and a.class = A ps : as 後面是別名 天行健
君子當自強不息~~@.@ 發表人 - t.j.b 於 2003/03/17 10:27:12 發表人 - t.j.b 於 2003/03/17 11:22:31
------
天行健 君子當自強不息~~@.@ |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
引言: 請問各位高手 我有3個table A : Name | Class | LID | DID B : LID | Name | Address C : DID | Name | Address 我要從3 個table中找出學生的Name, Class, LID, DID, B.Name, B.Address, C.Name, D.Address where Class = A. 因為我會用 join語法,有那位知道可以教小妹一下嗎? A li ka to~selina 妳好, 你最好說清楚一些, 大家才能幫妳: 1. 何種資料庫 ? 2. 需求要用 inner/outer join ? (A Table 之 LID 不存在於 B Table 中時, 資料要不要出來 ?, A Table 之 DID 不存在於 C Table 中時, 資料要不要出來 ?) 假設"是": // for MSSQL or Sybase SELECT A.Class,A.LID,A.DID,A.NAME as AName,B.Name as BName, B.Address as BAddress, C.Name as CNAME, C.Address as C.Address FROM A,B,C WHERE A.Class = 'A' AND A.LID *= B.LID AND A.DID *= C.DID // for Oracle SELECT A.Class,A.LID,A.DID,A.NAME as AName,B.Name as BName, B.Address as BAddress, C.Name as CNAME, C.Address as C.Address FROM A,B,C WHERE A.Class = 'A' AND A.LID = B.LID( ) AND A.DID = C.DID( )/* Free 和 Create 一樣重要 */ 發表人 - Mickey 於 2003/03/17 10:46:08 |
cmj
高階會員 發表:15 回覆:242 積分:226 註冊:2002-06-12 發送簡訊給我 |
假設妳的TABLE NAME叫 AA BB CC
B.LID , C.DID是PRIMAYR KEY
SQL語法如下 SELECT A.NAME,A.CLASS,A.LID,A.DID,B.NAME AS BBNAME,B.ADDRESS,
C.NAME AS CCNAME,C.ADDRESS AS CCADDRESS
FROM AA A
LEFT JOIN BB B ON B.LID=A.LID
LEFT JOIN CC C ON C.DID=A.DID
WHERE A.CLASS=A
注意三個TABLE之NAME為不同意義但名稱相同所以用AS以區分,當抓取資料出來
欄名為NAME,BBNAME,CCNAME
ADDRESS同樣處理為ADDRESS,CCADDRESS,如些以區同欄名之欄
|
selina
一般會員 發表:39 回覆:64 積分:20 註冊:2002-12-05 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
hi, 請試試: SELECT A.Name, A.Class, A.LID, A.DID, B.Name, B.Address, C.Name, C.Address
FROM A
LEFT JOIN B ON A.LID = B.LID
LEFT JOIN C ON A.DID=C.DID
WHERE A.Class = 'A' A Left Join B 代表 A 有 B 沒有的也要出現
若是改為 A INNER JOIN B 的話, 代表 A 有 B 也要有的才要出現!!
看你的用途來使用 Join 的方式!!
|
selina
一般會員 發表:39 回覆:64 積分:20 註冊:2002-12-05 發送簡訊給我 |
|
alice100001
一般會員 發表:21 回覆:49 積分:19 註冊:2002-09-14 發送簡訊給我 |
引言: hi, 請試試: SELECT A.Name, A.Class, A.LID, A.DID, B.Name, B.Address, C.Name, C.Address FROM A LEFT JOIN B ON A.LID = B.LID LEFT JOIN C ON A.DID=C.DID WHERE A.Class = 'A' A Left Join B 代表 A 有 B 沒有的也要出現 若是改為 A INNER JOIN B 的話, 代表 A 有 B 也要有的才要出現!! 看你的用途來使用 Join 的方式!!我用access 測試您的方法,可是不知道為什麼一直會有少了運算元的錯誤訊息,請問是acess不支援以上的寫法嗎? |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言:請將 WHERE A.Class = 'A' 改為 WHERE A.Class = "A"引言: hi, 請試試: SELECT A.Name, A.Class, A.LID, A.DID, B.Name, B.Address, C.Name, C.Address FROM A LEFT JOIN B ON A.LID = B.LID LEFT JOIN C ON A.DID=C.DID WHERE A.Class = 'A' A Left Join B 代表 A 有 B 沒有的也要出現 若是改為 A INNER JOIN B 的話, 代表 A 有 B 也要有的才要出現!! 看你的用途來使用 Join 的方式!!我用access 測試您的方法,可是不知道為什麼一直會有少了運算元的錯誤訊息,請問是acess不支援以上的寫法嗎? |
selina
一般會員 發表:39 回覆:64 積分:20 註冊:2002-12-05 發送簡訊給我 |
謝謝各熱心的回應
我最初寫的語法有是:
SELECT A.Name, A.Class, A.LID, A.DID, B.Name, B.Address, C.Name, C.Address
FROM (select A.Name, A.class, A.LID, A.DID FROM A WHERE A.Class = ''A'') AA
LEFT JOIN B ON AA.LID = B.LID
LEFT JOIN C ON AA.DID=C.DID
寫出來的結果不對,
現在照你們的寫法就可以寫出來了...謝謝~~~
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |