Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Mysql Выбор записей + к каждой count из другой таблицы

Ответить
Настройки темы
Mysql Выбор записей + к каждой count из другой таблицы

Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Господа, помогите построить запрос!

Есть таблица с фотографиями:
jpg

PHP код: Выделить весь код

id,jpg,opis 


Есть вторая таблица с комментами пользователей:
jpg_comm

PHP код: Выделить весь код

id,id_jpg,comment 



Для того, что бы пришивать к фото комментарии пользователей, добавляется комментарий и в ячейку id_jpg кладется номер id таблицы jpg, тоесть на id какой фотографии ссылаемся.
Нужно.
Выбрать фотографии + подсчитать количество коментариев к фото. (естественно в одном запросе)

Я делаю так:

PHP код: Выделить весь код

SELECT jpg.id,jpg,opis,count(*) AS count FROM `jpg`,`jpg_commWHERE jpg_comm.id_jpg jpg.id GROUP BY jpg.jpg 


Но в этом случае выбираются только фотографии у которых есть комментарий (есть записи ссылающиеся с таблицы jpg_comm)
Записи на которые не ссылок нет - не выбираются ;(
Как же построить запрос что бы выбирались все записи + если у фото нет комментария в поле count проставить 0,либо пкстое либо NULL?

Отправлено: 16:41, 25-05-2006

 

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


benya
знаю как это сделать в оракл(даже несколькими способами)

рекомендации по воплащению в MySQL:
просто завести еще одно поле в таблице jpg в котом будет хранится колличество коментариев... работать будет на порядок быстрее!

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 17:04, 25-05-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Vlad Drakula,
1)Ну, кидай, может идею споймаю.
2)Вобщем-то да, интересная идея. Только как ячейки обновлять?? Раз за какое-то время?

Отправлено: 17:15, 25-05-2006 | #3

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


benya
Цитата:
Только как ячейки обновлять?? Раз за какое-то время?
обновлять при занесения комментария, естественно. (В нормальных СУБД этим занимался бы триггер - при занесения комментария в таблицу комментариев, обновлял бы поле счетчика, а так придется доп. зпросом, но все равно лучше избыточное поле, - работать select будет быстрее )

Отправлено: 17:32, 25-05-2006 | #4


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


mar,
У меня еще должны кроме этих быть данные о среднем рейтинге фотографии.
Похоже так оно и прийдется сделать. Делать count для каждой фотки (комменты + рейтинг) тяжеловато будет.

Кстати, никто не подскажет оптимальную структуру для хранения голосов.
Предполагается оценивание фото по 5 бальной шкале. Пользователю, который проголосовал, какое-то время голосовать запрещено.
Писать их строками или опять таблицу добавить в jpg с типом text и записывать туда что-то типа 5&4&2&1&4&2&2 ... а потом считать среднее... Ну тоесть с разделителями.

Отправлено: 20:29, 25-05-2006 | #5

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


можно сделать табличку для голосования, что-то типа:
img_id int(11) not null,
user_id int(11) not null,
score int(11) not null,
+ если нужно, время голосования и что-там еще Вам может понадобится?
(это для записи результатов и проверки, голосовал ли человек, или когда он голосовал и показа результатов, если это не анонимно)
и, по аналогии с предыдущим вариантом, вводим избыточность, т.е. при занесении голоса, меняем данные соответствующего поле (расчета среднего) в jpg. Тогда все про рисунок узнаете очень быстро.

Отправлено: 20:38, 25-05-2006 | #6


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


mar,
А если user то нету. Голосование анонимное. Я думаю, како-то может быть отголосовавшего запретить по ip на несколько часов?

Отправлено: 21:32, 25-05-2006 | #7

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


benya
тогда session_id (например). ip - тоже можно, но надо учитывать, что целые районы, или небольшие городки могут светиться под одним ip, поскольку сидят, скажем, за одним proxy

Отправлено: 21:55, 25-05-2006 | #8


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


mar,
Кстати, написал апдейт для таблицы с голосами:
Код: Выделить весь код
UPDATE `jpg` SET avg_vote = (SELECT AVG(vote) from jpg_vote GROUP BY id_jpg) WHERE id=1
Правда пока не учитывает не даты не ip (или session_id). Не додумался.

Отправлено: 22:14, 25-05-2006 | #9


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


benya
Мщжно также без новых столбцов с помощью UNION ппробывать сделать
Просто объеденить запрос фоток с комментарями с запросом фоток вообще без комментариев (и вместо count(*) поставить просто 0)

-------
Fortes fortuna adiuvat


Отправлено: 03:15, 26-05-2006 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Mysql Выбор записей + к каждой count из другой таблицы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Удаление записей из таблицы по заданному времени на php magwolf Вебмастеру 5 14-08-2009 14:13
excel , повтор шапки таблицы на каждой странице bool Хочу все знать 2 15-12-2007 19:14
Выбор записей с сортировкой (MySQL) benya Вебмастеру 8 21-06-2006 21:09
MySQL - большие таблицы XCodeR Вебмастеру 4 28-08-2005 11:40
Удаление записей из таблицы MySQL unknown Вебмастеру 3 21-05-2003 14:54




 
Переход