Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

  • Закрытая тема Тема закрыта

Помогите с запросом 2

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 06 Май 2010 - 20:15

как посчитать количество строк в 2-х таблицах?
(SELECT COUNT(*)
FROM `photo`
LEFT JOIN `factory`
ON photo.id_factory=factory.id
LEFT JOIN `type`
ON photo.id_type=type.id
LEFT JOIN `style`
ON photo.id_style=style.id
WHERE photo.id_factory='$factory'
AND photo.published=1
AND type.published=1
AND style.published=1
AND factory.published=1)
UNION ALL
(SELECT COUNT(*)
FROM `other_photo`
LEFT JOIN `factory`
ON other_photo.id_factory=factory.id
LEFT JOIN `other`
ON other_photo.id_other=other.id
WHERE other_photo.id_factory='$factory'
AND other_photo.published=1
AND factory.published=1
AND other.published=1)
");
$posts = mysql_result($result,0);
echo $posts;

считает не правильно

выдает значение только 1-й таблицы, а надо, чтоб сумма была

 

 

  • 0

#2 BaCo

BaCo
  • Пользователь
  • 103 сообщений
  • Репутация: 0

Отправлено 07 Май 2010 - 13:35

А почему нельзя так:
$posts = mysql_result(SELECT COUNT(*) FROM `photo` LEFT JOIN `factory` ON photo.id_factory=factory.id LEFT JOIN `type` ON photo.id_type=type.id LEFT JOIN `style` ON photo.id_style=style.id WHERE photo.id_factory='$factory' AND photo.published=1 AND type.published=1 AND style.published=1 AND factory.published=1,0) + mysql_result(SELECT COUNT(*) FROM `other_photo` LEFT JOIN `factory` ON other_photo.id_factory=factory.id LEFT JOIN `other` ON other_photo.id_other=other.id WHERE other_photo.id_factory='$factory' AND other_photo.published=1 AND factory.published=1 AND other.published=1, 0);
		echo $posts;

  • 0

#3 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 07 Май 2010 - 14:10

я нашел пока такое решение

$posts = mysql_result($result,0)+mysql_result($result,0);

хочется еще изящнее
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 08 Май 2010 - 19:28

sc2r2bey, а зачем такие объединения ты мне сначала объясни... Затем и запрос составим :(
  • 0

#5 Osip

Osip
  • Пользователь
  • 9 сообщений
  • Репутация: 0

Отправлено 31 Июль 2010 - 07:50

Если нужно так как в 1м посте, то

$query = mysql_fetch_array(mysql_query("SELECT COUNT(*) AS `count_photo`
FROM `photo`
LEFT JOIN `factory`
ON photo.id_factory=factory.id
LEFT JOIN `type`
ON photo.id_type=type.id
LEFT JOIN `style`
ON photo.id_style=style.id
WHERE photo.id_factory='$factory'
AND photo.published=1
AND type.published=1
AND style.published=1
AND factory.published=1)
UNION ALL
(SELECT COUNT(*) AS `count_other_photo`
FROM `other_photo`
LEFT JOIN `factory`
ON other_photo.id_factory=factory.id
LEFT JOIN `other`
ON other_photo.id_other=other.id
WHERE other_photo.id_factory='$factory'
AND other_photo.published=1
AND factory.published=1
AND other.published=1)"));

echo 'PHOTO: ' . $query['count_photo'] . '<br />' . 'OTHER_PHOTO: ' . $query['count_other_photo'];

  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 05 Август 2010 - 17:58

sc2r2bey,
Если тебе только количество нужно, то зачем тебе такие сложные конструкции с LEFT JOIN, ведь они всё равно не будут учтены. Почитай что такое LEFT JOIN - Записи из правой таблицы будут примыкать к записям из левой таблице, там где найдут соответствие, записи же из левой таблицы не будут исключены по условию стыковки.

Если уж не нужны другие таблицы, то вот:
SELECT COUNT(*) as `count` FROM (SELECT `id` FROM `table1` UNION ALL SELECT `id` FROM `table2`) as `table`

Вытащит в поле COUNT все записи из двух таблиц. У тебя примерно тоже самое.


кстати, есть вариант - mysql_num_rows()
  • 0


Оформление форума – IPBSkins.ru