我目前使用下面的PHP代碼:關係MySQL - 獲取的屬性?
// Get all subordinates
$subords = array();
$supervisorID = $this->session->userdata('supervisor_id');
$result = $this->db->query(sprintf("SELECT * FROM users WHERE supervisor_id=%d AND id!=%d",$supervisorID, $supervisorID));
$user_list_query = 'user_id='.$supervisorID;
foreach($result->result() as $user){
$user_list_query .= ' OR user_id='.$user->id;
$subords[$user->id] = $user;
}
// Get Submissions
$submissionsResult = $this->db->query(sprintf("SELECT * FROM submissions WHERE %s", $user_list_query));
$submissions = array();
foreach($submissionsResult->result() as $submission){
$entriesResult = $this->db->query(sprintf("SELECT * FROM submittedentries WHERE timestamp=%d", $submission->timestamp));
$entries = array();
foreach($entriesResult->result() as $entries) $entries[] = $entry;
$submissions[] = array(
'user' => $subords[$submission->user_id],
'entries' => $entries
);
$entriesResult->free_result();
}
基本上我理解的是一個給定的supervisor_id的下屬(每用戶條目有一個supervisor_id場)的用戶列表,然後抓住條目屬於任何這些用戶。
我不禁覺得有這樣做的更優雅的方式,像SELECT FROM tablename where user->supervisor_id=2222
有沒有這樣的事用PHP/MySQL的?
應該可能在某個時候正確地學習關係數據庫。 :(
編輯: 這裏是有關架構
submissions
===============================
id, user_id, timestamp
submittedentries
===============================
id, user_id, timestamp
users
===============================
id, supervisor_id, email
一個submission
有很多submittedentries
,和我目前使用時間戳引用此我會更願意改變更多。這個如果有人可以建議更有效的方式(是的,有更多的領域,我省略)
你可以在編輯中發佈數據庫模式嗎?至少有兩個查詢可以合併爲一個,但是您可能會將所有這三個查詢壓縮。儘管如此,很難猜測這些關係是什麼。 (並且從來沒有不好的時間開始學習) – tadamson 2010-03-17 03:22:09