2010/12/14

[BUG] MySQL Function FIND_IN_SET

當 有兩個 Table:

Table A
item(char)relation(char)
A1,2,3
B2,3,4
C1,3,5
D1,2,3,4
E5,6

Table B
relay(int)stuff(int)
11
22
34
48
516
632
101048576

若希望他能變成:
Select A.item, Sum(B.stuff) as Result  from A,B

Result
itemResult(note)
A71,2,3 => SUM(1,2,4)
B142,3,4 =>SUM(2,4,8)
C211,3,5 =>SUM(1,4,16)
D151,2,3,4 =>SUM(1,2,4,8)
E485,6 =>SUM(16,32)

結果會不如預期
需要使用 FIND_IN_SET Func. 去做判斷:
SELECT A.item, sum( B.stuff) AS Result  FROM A,B
WHERE  FIND_IN_SET( B.relay, A.relation)
GROUP BY A.item  ORDER BY A.item

結果看似滿意!

......... BUT......
如果 A的connection內 有一筆
A.connection="05,06"
甚至只是個 Space
A.connection="5,   6"

結果就令人傻眼.....@_@"

沒有留言:

張貼留言