Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с оптимизацией запроса
 
 автор: tim-ua   (18.02.2009 в 15:57)   письмо автору
 
 

Такая проблема:
как такой запрос написать правильно:

$database->setQuery("SELECT * FROM users");
$list = $database->loadObjectList();
foreach($list as $var)
{
$database->setQuery("SELECT * FROM links WHERE id='{$var->userid}'");
$list = $database->loadObjectList();
foreach($list as $var2)
{
$database->setQuery("SELECT * FROM posts WHERE id='{$var2->postid}'");
$list = $database->loadObjectList();
foreach($list as $var3)
echo $var->user.' '.$var3->post;
}
}

Таблицы:
users - пользователи, колонки: id (auto increment), user - имя пользователя, postid - id должности.
posts - должности, колонки: id (auto increment), post - название должности.
links - связи, колонки userid - id пользователя, postid - id пользователя.

Если например 100 пользователей то будет 100 запросов к базе post и 100 запросов к базе links.
И правильно ли я создал таблицу links? Она нужна изза того что у одного пользователя должна быть возможность добавления неограниченного количества должностей.

  Ответить  
 
 автор: cheops   (19.02.2009 в 14:56)   письмо автору
 
   для: tim-ua   (18.02.2009 в 15:57)
 

Почему вы считаете, что текущий запрос(ы) неправильный, что вы ожидаете от оптимизации?

  Ответить  
 
 автор: а-я   (19.02.2009 в 19:30)   письмо автору
 
   для: tim-ua   (18.02.2009 в 15:57)
 

может что-нить в этом роде?

<?
$sql 
'
SELECT 
 a.`user`,
 GROUP_CONCAT(b.`post` SEPARATOR", ") AS `postes`
FROM 
 `users` a
  LEFT JOIN `posts` b ON b.`id`=a.`postid`
GROUP BY a.`id`
'
;

$database->setQuery($sql);
$list $database->loadObjectList();

 foreach(
$list as $var)
 echo 
$var->user ' (' $var->postes ')';
?>



таблицу links я бы удалил вообще..

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования