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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Выборка из трех таблиц

Сообщения:  [1-10]   [11-14] 

 
 автор: SS   (28.04.2005 в 02:24)   письмо автору
 
   для: cheops   (27.04.2005 в 23:37)
 

Все супер, спасибо, работает!

   
 
 автор: cheops   (27.04.2005 в 23:37)   письмо автору
 
   для: SS   (27.04.2005 в 22:57)
 

Можно поступить примерно следующим образом
<?php 
  
// Устанавливаем соединение с базой данных 
  
include "config.php"
  
// Формируем запрос на выборку изображений
  // с сортировкой по имени изображения
  
$query "SELECT * FROM images ORDER BY name"
  
// Выполняем запрос 
  
$tb mysql_query($query); 
  
// Проверяем правильность выполнения запроса 
  
if(!$tb) exit(mysql_error()); 
  
// В цикле выполняем вывод изображений
  
while($img mysql_fetch_array($tb)) 
  { 
    echo 
$img['name']."<br>"
    
// Запрашиваем комментарии для данного изображения 
    
$query "SELECT comments.name_comment AS name_comment,
                     comments.puttime AS puttime,
                     users.name_user AS name_user
              FROM comments, users
              WHERE comments.id_image = 
$img[id_image] AND 
                    users.id_user = comments.id_user 
              ORDER BY comments.puttime DESC"
;
    
// Выполняем запрос 
    
$com mysql_query($query); 
    
// Проверяем правильность выполнения запроса 
    
if(!$com) exit(mysql_error()); 
    
// Если есть хоть один комментарий - выводим
    
if(mysql_num_rows($com)>0)
    {
      while(
$comment mysql_fetch_array($com)) 
      { 
        echo 
$comment['puttime']." - ".$comment['name_user']."<br>";
        echo 
$comment['name_comment']."<br>";
      } 
    }
    else
    {
      
// Здесь можно вывести, что комментарие нет
    
}
    echo 
"<br>"
  } 
?>

При использовании в первом запросе ограничения LIMIT (вы наверное всё равно будет постраничную навигацию использовать) заметного уменьшения скорости наблюдаться не должно.

   
 
 автор: SS   (27.04.2005 в 22:57)   письмо автору
 
   для: cheops   (26.04.2005 в 23:10)
 

Очень жду!!! - у меня вся работа из-за этого встала.

   
 
 автор: SS   (27.04.2005 в 00:34)   письмо автору
 
   для: cheops   (26.04.2005 в 23:10)
 

Ну я же не знал, что тут такие тонкости с названиями. Я как думал, так и сказал. :)
Хорошо, помогите тогда пожалуйста с такой схемой, - мне важен результат, мне нужно вывести все картинки и все комментарии.

   
 
 автор: cheops   (26.04.2005 в 23:10)   письмо автору
 
   для: SS   (26.04.2005 в 18:22)
 

Там не трёхтабличный запрос. Обычно запрашивают картинки - выводят их и для каждой картинки проверяют наличие комментариев. Т.е. система состоит из запроса - обработки результата в цикле и запроса в цикле не комментарии к изображениям.

   
 
 автор: SS   (26.04.2005 в 18:22)   письмо автору
 
   для: cheops   (26.04.2005 в 13:56)
 

Вы хотите сказать, что нельзя вывести такой запрос:
<Вывести все картинки, удовлетворяющие запросу>
IMAGE, где
<если есть комментарии, у которых ID_COMMENT=ID_IMAGE, то вывести эти комментарии><если ID_USER_COMMENT=ID COMMENT, то вывести такого юзера>
и т.д. в цикле
???
Мне кажется это довольно простым запросом с парой условий, просто я не знаю как это написать.
Как же тогда работают гостевые книги, форумы и галереи с возможностью оставить комментарий - там же примерно то же самое, что и мне нужно?

   
 
 автор: cheops   (26.04.2005 в 13:56)   письмо автору
 
   для: SS   (25.04.2005 в 23:25)
 

Нет, тогда не получится, получится только так: первым запросом вывести изображения у которых имеется комментарий, а вторым, отдельным запросом те, у которых нет ни одного комментария (сортировки средствами MySQL здесь к сожалению не получится). Можно сделать финт ушами, добавить системного пользователя в таблицу users (скажем с первичным ключём id_user = 0) и добавить каждому из изображений (автоматически) комментарий этого пользователя, а затем просто не выводить комментарий такого пользователя уже средствами PHP - грубо, но работает.

   
 
 автор: SS   (25.04.2005 в 23:25)   письмо автору
 
   для: cheops   (25.04.2005 в 21:41)
 

-- Версия сервера: 4.0.21
-- Версия PHP: 4.3.9

   
 
 автор: cheops   (25.04.2005 в 21:41)   письмо автору
 
   для: SS   (25.04.2005 в 18:33)
 

А вложенный запрос не сработает, они только в MySQL 4.1 появились, у вас какая версия MySQL?

   
 
 автор: SS   (25.04.2005 в 18:33)   письмо автору
 
   для: cheops   (25.04.2005 в 13:25)
 

Покажите, пожалуйста, как выглядит упрощенная схема такого запроса в запросе?

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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