→ averywu:原本不想拆的,可是B的資料很少,所以...想拼回去了 Orz.. 03/25 00:51
※ 引述《averywu (看文不要只會用橫的看)》之銘言:
: A TABLE
: ID SID PRICE GID
: ----------------------------
: 1 1 100 2
: 2 1 110 2
: 3 1 130 2
: B TABLE
: ID SID PRICE GID
: ----------------------------
: 1 1 20 2
: 2 1 30 2
: 3 1 33 2
: select a.*,b.* from a,b where a.SID = 1 AND b.SID = 1
: 為什麼會跑出9筆啊 Orz...
: 要怎樣才有下列結果
: ID SID APRICE BPRICE GID
: ----------------------------------
: 1 1 100 20 2
: 2 1 110 30 2
: 3 1 130 33 2
: 還是乾脆合併二個TABLE重做算了?因為這二個TABLE又要對應到另二個TABLE
: (SID ﹠ GID)
把語法內含的 JOIN 全部寫出來就清楚了
SELECT a.`ID`, a.`SID`,
a.`PRICE` AS `APRICE`, b.`PRICE` AS `BPRICE`,
a.`GID`
FROM a
LEFT JOIN b
ON a.`ID` = b.`ID`
AND a.`SID` = b.`SID`
AND a.`GID` = b.`GID`
WHERE a.`SID` = 1
不過可能有問題的是:
1. ID, SID, GID 都要一樣嗎? 如果 SID,GID 一樣, ID不同的話要如何顯示(AID, BID)?
2. 如果有些 SID, GID 的組合 A 有 B 沒有, 或是 B 有 A 沒有的話要如何顯示, null?
3. 如果 1 成立, 2 不會發生的話, A 和 B 應該放同一張表?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 71.93.105.54
※ 編輯: danielguo 來自: 71.93.105.54 (03/24 17:18)