2011-03-25 38 views
0

我有2個表異常形式的加入

Table 1 Name: filestable 

Table 1 Fields: 
     id   int 
     name  varchar 
     deleted  enum('y','n') 


Table 2 Name: productstable 

Table 2 Fields: 
     id   int 
     name  varchar 
     fileids  text 
     deleted  enum('y','n') 

對於每個產品fileids被存儲爲「1」或「1,2」 即,如果單文件與產品相關聯,則只有單個文件ID將顯示(「1」),但如果多個文件相關聯,那麼文件ID與分離「」(如‘1,2’)

我怎樣才能得到輸出如下:

fileid   filename    associated products (i.e. total product associated with the file) 

此外,既不是文件也不親管道應該已被刪除,即刪除='n'

我怎樣才能得到上述結果?

回答

1
SELECT f.id fileid, 
      f.name filename, 
      p.id productid, 
      p.name productname 
     FROM productstable p 
INNER JOIN filestable f ON FIND_IN_SET(f.id, p.fileids) 
     AND f.deleted = 'n' 
    WHERE p.deleted = 'n' 

但我堅決要求將這種可怕的模式重寫爲多對多關係。