2014-04-18 21 views
0

我的MySQL表看起來是這樣的:MySQL的 - 取得列名貨物價值的1

| id | picID  | name_Gina | name_Tom | name_Liz | 
|----|------------|-----------|----------|----------| 
| 1 | DSC057.jpg | 1   | 0  | 0  | 
| 2 | DSC622.jpg | 1   | 0  | 1  | 
| 3 | DSC624.jpg | 0   | 1  | 0  | 
| .. | ..   | ..  | ..  | ..  | 

等。名稱_前綴是我與某個圖片關聯的人員。現在我想顯示一張照片,例如。 DSC622.jpg並回應Gina和Liz標記在這張照片上。所以我需要列名稱(name_Gina & name_Liz)其中picID = 1?

SG是這樣的:

SHOW COLUMNS FROM $table LIKE 'name_%' WHERE id = $id 

誰能給我一個提示? 也許我應該使用兩個表格,一個使用名稱,另一個使用picID並將它們連接在一起?

+4

Aaaaaah所有照片。這個數據庫設計太錯誤了。請改變它。這是解決您問題的唯一方法! –

+0

嘿,尤爾根 - 我很喜歡!你可以給我一些提示如何設計表格以及如何將它們結合在一起? – user2987790

回答

2

你真的應該改變你的數據庫設計,這樣的事情

pictures table 
-------------- 
id 
name 


users table 
----------- 
id 
name 
birth_date 


user_pictures table 
------------------- 
picture_id 
user_id 

user_pictures表將包含對每個用戶的畫面關係的記錄。

實例數據

pictures 
id name 
1 dsc_01.jpg 
2 dsc_04.jpg 

users 
id name 
1 tom 
2 jane 

user_pictures 
picture_id user_id 
1   1 
1   2 
2   2 

然後,您可以選擇specfic用戶accociated像這樣

select p.name 
from pictures p 
join user_pictures up on up.picture_id = p.id 
join users u on up.user_id = u.id 
where u.name = 'tom' 
+0

與picture_id和user_id的第三個表是通過加入php在飛行中生成的? – user2987790

+0

不可以。您也可以在MySQL數據庫中創建該表。 –

+0

對不起,我是一個初學者,我會嘗試你的解決方案。謝謝! – user2987790