作者danielguo (Daniel Guo)
看板Database
标题Re: [SQL ] 选取不同资料表对应同KEY的问题
时间Thu Mar 24 17:11:04 2011
※ 引述《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)
1F:→ averywu:原本不想拆的,可是B的资料很少,所以...想拼回去了 Orz.. 03/25 00:51