Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / COUNT, GROUP BY, два LEFT JOIN'a / 8 сообщений из 8, страница 1 из 1
11.10.2016, 00:22
    #39324120
ADsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT, GROUP BY, два LEFT JOIN'a
Понимаю, что туплю и просто уже не вижу в чем дело....

Имеем запрос

Код: sql
1.
2.
3.
4.
5.
6.
SELECT COUNT(p.id) AS s			
			FROM st_point AS p
			LEFT JOIN st_foto AS f ON p.id = f.id_point 
			LEFT JOIN st_review AS r ON p.id = r.id_point			
			WHERE p.id_user = 100 OR f.id_owner = 100 OR r.id_user = 100
			GROUP BY p.id


что есть ху... - имеем таблицу мест st_point, и связанных с ней таблиц фото и отзывов st_foto, st_review
Задача - найти количество всех мест, которые создал пользователь с id = 100, или добавил к этим местам фото или отзыв
кол-во мест место созданное пользователем, в котором он добавлял кучу фото или отзывов - конечно же не должно плодится как кошки весной
.... а плодится
хочется получить простой ответ в виде одного числа.... а что-то не соображу
...
Рейтинг: 0 / 0
11.10.2016, 04:22
    #39324152
COUNT, GROUP BY, два LEFT JOIN'a
ADsoft,

используй подзапрос (deriver table, select-from-select) для предварительного вычисления агрегатов по таблицам фото и отзывов. после чего результат джойн к таблице мест...
...
Рейтинг: 0 / 0
11.10.2016, 19:10
    #39324827
ADsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT, GROUP BY, два LEFT JOIN'a
попробовал так
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT COUNT(*) AS s	FROM 
  (SELECT * FROM st_point AS p
	LEFT JOIN st_foto AS f ON p.id = f.id_point 
	LEFT JOIN st_review AS r ON p.id = r.id_point			
	WHERE p.id_user = 100 OR f.id_owner = 100 OR r.id_user = 100
	GROUP BY p.id
) AS w


на каком то наборе вроде верно считает но не всегда - значить что-то неверно понял
...
Рейтинг: 0 / 0
11.10.2016, 19:49
    #39324840
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT, GROUP BY, два LEFT JOIN'a
ADsoftЗадача - найти количество всех мест, которые создал пользователь с id = 100, или добавил к этим местам фото или отзыв
кол-во мест место созданное пользователем, в котором он добавлял кучу фото или отзывов - конечно же не должно плодится как кошки весной
Пользователь создал 3 места, к одному из них добавил 2 фото, к другому 1 фото и 1 отзыв, а также добавил 1 отзыв к 1 чужому месту, 1 отзыв и 2 фото к другому чужому месту, и 2 фото к третьему... и какой же
ADsoftпростой ответ в виде одного числа
ты желаешь в этом случае получить?
...
Рейтинг: 0 / 0
12.10.2016, 20:11
    #39325654
ADsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT, GROUP BY, два LEFT JOIN'a
Akina,
желаю получить ответ я...
количество "активностей" в местах....
активность подразумевает под собой ИЛИ добавление места, ИЛИ добавления к месту фото ИЛИ добавление к месту отзыва
....но с группировкой по местам, то есть если я и добавил сесто и 5 фото к нему добавил и 3 отзыва - это одна Активность....
...
Рейтинг: 0 / 0
12.10.2016, 21:14
    #39325681
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT, GROUP BY, два LEFT JOIN'a
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT COUNT(*)
FROM (
        SELECT id FROM st_point WHERE id_user = 100
    UNION
        SELECT id_point FROM st_foto WHERE id_owner = 100
    UNION
        SELECT id_point FROM st_review WHERE id_user = 100
      ) dummy
...
Рейтинг: 0 / 0
13.10.2016, 22:02
    #39326661
ADsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT, GROUP BY, два LEFT JOIN'a
Akina,

чего сразу dummy то....
ваш запрос посчитает все, да не раз.... и например созданное мной место к которому я поставил 5 отзывов и 3 фото - он насчитает 1+5+3 = аж 9! а должен 1
...
Рейтинг: 0 / 0
14.10.2016, 17:05
    #39327280
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT, GROUP BY, два LEFT JOIN'a
ADsoftнапример созданное мной место к которому я поставил 5 отзывов и 3 фото - он насчитает 1+5+3 = аж 9! а должен 1Вот то есть даже не посмотрел, и сразу критиковать... а по делу-то есть чего сказать? Единица будет, единица...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / COUNT, GROUP BY, два LEFT JOIN'a / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]