Показать сообщение отдельно
Старый 26.03.2013, 14:08   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Возможно ли оптимизировать получение данных из двух таблиц

Посоветовали мне получить параметры итемов отдельно одним запросом и получилось следующее
public function items_getUserItems($user_id)
    {
        
$sth $this->dbh->prepare('SELECT * FROM user_items WHERE user = :user_id');
        
$sth->execute(array(
            
':user_id' => intval($user_id),
        ));
 
        
$items $sth->fetchAll(PDO::FETCH_ASSOC);
 
        
$count count($items);
 
        
$item_ids = array();
        
$item_index = array();
        for(
$i=0$i<$count$i++)
        {
            
$items[$i]['params'] = array();
            
$item $items[$i];
            
$item_ids[] = $item['id'];
            
$item_index[$item['id']] = $i;
        }
 
        
$sth $this->dbh->prepare('SELECT * FROM user_item_params WHERE item IN ('.implode(', '$item_ids).');');
        
$sth->execute();
        
$item_params $sth->fetchAll(PDO::FETCH_ASSOC);
 
        foreach(
$item_params as $item_pram)
        {
            
$item $item_pram['item'];
            unset(
$item_pram['item']);
            
$items[$item_index[$item]]['params'][] = $item_pram;
        }
 
        return 
$items;
    } 

А еще я обдумывал вариант с параметрами в поле первой таблицы в виде json строки...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
DStalk (26.03.2013)