Şu anda aşağıdaki PHP kodu kullanıyorum:
// 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();
}
Temelde sonra bu kullanıcılardan herhangi ait girdileri kapma, belirli bir supervisor_id astları (her kullanıcı girişi bir supervisor_id alan vardır) olan kullanıcıların listesini alıyorum.
Ben yardım edemem, ancak bunu yapmanın daha zarif bir şekilde SELECT FROM tablename where user->supervisor_id=2222
gibi, orada olduğunu düşünemiyorum
Is there something like this with PHP/MySQL?
Should probably learn relational databases properly sometime. :(
EDIT: here is the relevant schema
submissions
===============================
id, user_id, timestamp
submittedentries
===============================
id, user_id, timestamp
users
===============================
id, supervisor_id, email
bir submission
çok submittedentries
var, ve şu anda zaman damgası kullanarak bu referans ediyorum. Birisi daha verimli bir yol önermek eğer ben bu değiştirmek için daha istekli olurdu. (Ve evet, ben unutuyorum daha alanlar vardır)