2016-02-15 23 views
0

分類表SQL SELECT數據回暖ID從string

+----+-----------------------+ 
| id | category_name   | 
+----+-----------------------+ 
| 1 | Buy Book    | 
| 2 | Buy other thinks  | 
+----+-----------------------+ 

購買表

+----+-----------------------+----------+-------------+----------+--------+-------+ 
| id | identity    | name  | description | per_rate | bought | costs | 
+----+-----------------------+----------+-------------+----------+--------+-------+ 
| 1 | PROJECT[1]CATEGORY[1] | BOOK  | PHP BOOK | 10  | 50  | 5000 | 
| 2 | PROJECT[1]CATEGORY[1] | BOOK  | PHP BOOK | 10  | 40  | 4000 | 
| 3 | PROJECT[2]CATEGORY[1] | BOOK  | JS BOOK  | 2  | 50  | 100 | 
+----+-----------------------+----------+-------------+----------+--------+-------+ 

我希望當我選擇該表,從表中的其他選擇類別名稱。

身份:項目[PROJECT_ID]種類[CATEGORY_ID]

那麼有什麼辦法可以挑選來自其他表

類別ID,然後選擇類別名稱我要像這表

+----+---------------+-----------------------+----------+-------------+----------+--------+-------+ 
| id | category_name | identity    | name  | description | per_rate | bought | costs | 
+----+---------------+-----------------------+----------+-------------+----------+--------+-------+ 
| 1 | Buy Book  | PROJECT[1]CATEGORY[1] | BOOK  | PHP BOOK | 10  | 50  | 5000 | 
| 2 | Buy Book  | PROJECT[1]CATEGORY[1] | BOOK  | PHP BOOK | 10  | 40  | 4000 | 
| 3 | Buy Book  | PROJECT[2]CATEGORY[1] | BOOK  | JS BOOK  | 2  | 50  | 100 | 
+----+---------------+-----------------------+----------+-------------+----------+--------+-------+ 
+0

請告訴我們你試過的東西 – Epodax

+0

我不能爲解決這個問題做任何事情。 – ABHIJIT

+1

使用SubString從標識值中獲取密鑰,然後加入到您的類別表中。 –

回答

2

你有一個非常糟糕的數據結構。 projectcategory應位於其自己的列中,數字正確存儲爲數字,並具有正確的外鍵關係。在MySQL中,這樣做可能需要觸發器,但這是值得的。

有時候,我們被其他人的糟糕決定所困。你可以做你想要使用的是什麼like

select b.*, c.category_name 
from buy b join 
    category c 
    on b.identity like concat('%CATEGORY[', c.id, ']'); 

但是,你應該把精力投入到修復損壞的數據結構。

+0

它的工作......和(項目和類別應該在他們自己的專欄)這是一個偉大的想法。 **謝謝** – ABHIJIT