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

Форум MySQL

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

 

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

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

тема: Многотабличный запрос (левое объединение)
 
 автор: segafrompiter   (24.07.2006 в 19:55)   письмо автору
 
 

Таблица events
id_event (ключевое)
name_event и т.д.

Таблица reviews (это текстовые отчеты о мероприятиях из events)
id_event (берется из events)

Таблица fotoreviews (это фотоотчеты о мероприятиях из events)
id_event (берется из events)

Мне надо вывести в общем списке мероприятия, на которые есть отчеты(либо текстовые, либо фото, либо то и другое).
Т.е. название мероприятие--
если есть текстовый, то будет надпись--читать текстовый отчет--ссылка
если есть фотоотчет, то будет надпись--смотретьфотоотчет--ссылка

Мне подсказали, что такой запрос надо делать с помощью оператора join, но я так и не разобрался в нем.

Т.е. есть ли на событие текстовый или фотоотчет, или и то и другое--надо вывести это событие в списке.

У меня такой сейчас запрос-

$result91999= mysql_query("SELECT *,DATE_FORMAT(date_event,'%d-%m-%Y') AS date_event 
FROM events,fotoreviews,clubs 
where events.id_event=fotoreviews.id_event and clubs.id_club=events.id_club order by date_event");


В нем выводятся все события, у которых есть фотоотчет, clubs- это таблица клубов.

   
 
 автор: segafrompiter   (25.07.2006 в 00:41)   письмо автору
 
   для: segafrompiter   (24.07.2006 в 19:55)
 

если что-то не досказал-скажите...

   
 
 автор: cheops   (25.07.2006 в 10:02)   письмо автору
 
   для: segafrompiter   (24.07.2006 в 19:55)
 

Попробуйте заменить строку
FROM events,fotoreviews,clubs 

на
FROM events LEFT JOIN fotoreviews LEFT JOIN clubs 

   
 
 автор: segafrompiter   (25.07.2006 в 10:11)   письмо автору
 
   для: cheops   (25.07.2006 в 10:02)
 

Выдал ошибку

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in v:\home\test2.ru\www\index.php on line 262

еще раз скажу, что в строчке не хватает таблицы reviews ,
из 2-х таблиц reviews и fotoreviews надо выбрать все записи, если у 2-х записей разных таблиц совпадает id_event , то надо выводить один раз только такую запись.

   
 
 автор: cheops   (25.07.2006 в 10:16)   письмо автору
 
   для: segafrompiter   (25.07.2006 в 10:11)
 

Обязательно ставьте проверку после выполнения фукнции mysql_query()
<?php
  $tbl 
mysql_query($query);
  if(!
$tbl) exit("Ошибка - ".mysql_error())
?>

Попробуйте для начала такой запрос
SELECT *,DATE_FORMAT(date_event,'%d-%m-%Y') AS date_event
FROM events,fotoreviews
WHERE events.id_event=fotoreviews.id_event 
ORDER BY date_event

PS Кстати, сортировка по date_event будет не правильной, так как даты сортируются как строки, а у вас сначала идёт день, потом месяц, потом год.

   
 
 автор: segafrompiter   (25.07.2006 в 10:28)   письмо автору
 
   для: cheops   (25.07.2006 в 10:16)
 

у меня работает запрос

$result91999= mysql_query("SELECT *,DATE_FORMAT(date_event,'%d-%m-%Y') AS date_event 
FROM events,fotoreviews,clubs 
where events.id_event=fotoreviews.id_event and clubs.id_club=events.id_club order by date_event");

!!!
в него надо добавить запрос из таблицы REVIEWS , и чтобы одинаковые записи по id_event в reviews и fotoreviews не повторялись.

   
 
 автор: cheops   (25.07.2006 в 11:47)   письмо автору
 
   для: segafrompiter   (25.07.2006 в 10:28)
 

Тогда добавьте группировку (GROUP BY) по полям fotoreviews.id_event и clubs.id_club.

   
Rambler's Top100
вверх

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