Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Оптимизация запроса (tim-ua) 18/02/2009 - 17:01:00
      Re: Оптимизация запроса (pavel) 20/02/2009 - 11:44:03

> Original message text:
> From: tim-ua - 18/02/2009 - 17:01:00
> Subject:Оптимизация запроса
> -----------------
> Такая проблема:
> как такой запрос написать правильно:
>
> $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? Она нужна изза того что у одного пользователя должна быть возможность добавления неограниченного количества должностей.
>


From: pavel - 20/02/2009 - 11:44:03
Subject:Оптимизация запроса
-----------------
Если я правильно понимаю задачу: получить список пользователей и их должностей (может быть более одной должности для пользователя).

Запрос 1.
SELECT `users`.`user`, `posts`.`post`
FROM `users`, `links`, `posts`
WHERE (
`user`.`id` = `links`.`userid`
AND `posts`.`id` = `links`.`postid`)

Этот запрос вернет список пользователей и их должностей. Дальше просто выводишь его в цикле.

Не очень понятно назначение поля `users`.`postid`. Если подразумеваются связи 'многое ко многим', тогда это поле бессмысленно. Если связи '1-1', тогда не понятно назначение таблицы `links`.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
35033



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |