![]() |
Mysql Выбор записей + к каждой count из другой таблицы
Господа, помогите построить запрос!
Есть таблица с фотографиями: jpg PHP код:
jpg_comm PHP код:
Для того, что бы пришивать к фото комментарии пользователей, добавляется комментарий и в ячейку id_jpg кладется номер id таблицы jpg, тоесть на id какой фотографии ссылаемся. Нужно. Выбрать фотографии + подсчитать количество коментариев к фото. (естественно в одном запросе) Я делаю так: PHP код:
Записи на которые не ссылок нет - не выбираются ;( Как же построить запрос что бы выбирались все записи + если у фото нет комментария в поле count проставить 0,либо пкстое либо NULL? |
benya
знаю как это сделать в оракл(даже несколькими способами) рекомендации по воплащению в MySQL: просто завести еще одно поле в таблице jpg в котом будет хранится колличество коментариев... работать будет на порядок быстрее! |
Vlad Drakula,
1)Ну, кидай, может идею споймаю. 2)Вобщем-то да, интересная идея. Только как ячейки обновлять?? Раз за какое-то время? |
benya
Цитата:
|
mar,
У меня еще должны кроме этих быть данные о среднем рейтинге фотографии. Похоже так оно и прийдется сделать. Делать count для каждой фотки (комменты + рейтинг) тяжеловато будет. Кстати, никто не подскажет оптимальную структуру для хранения голосов. Предполагается оценивание фото по 5 бальной шкале. Пользователю, который проголосовал, какое-то время голосовать запрещено. Писать их строками или опять таблицу добавить в jpg с типом text и записывать туда что-то типа 5&4&2&1&4&2&2 ... а потом считать среднее... Ну тоесть с разделителями. |
можно сделать табличку для голосования, что-то типа:
img_id int(11) not null, user_id int(11) not null, score int(11) not null, + если нужно, время голосования и что-там еще Вам может понадобится? (это для записи результатов и проверки, голосовал ли человек, или когда он голосовал и показа результатов, если это не анонимно) и, по аналогии с предыдущим вариантом, вводим избыточность, т.е. при занесении голоса, меняем данные соответствующего поле (расчета среднего) в jpg. Тогда все про рисунок узнаете очень быстро. |
mar,
А если user то нету. Голосование анонимное. Я думаю, како-то может быть отголосовавшего запретить по ip на несколько часов? |
benya
тогда session_id (например). ip - тоже можно, но надо учитывать, что целые районы, или небольшие городки могут светиться под одним ip, поскольку сидят, скажем, за одним proxy |
mar,
Кстати, написал апдейт для таблицы с голосами: Код:
UPDATE `jpg` SET avg_vote = (SELECT AVG(vote) from jpg_vote GROUP BY id_jpg) WHERE id=1 |
benya
Мщжно также без новых столбцов с помощью UNION ппробывать сделать Просто объеденить запрос фоток с комментарями с запросом фоток вообще без комментариев (и вместо count(*) поставить просто 0) |
benya
Цитата:
vadimiron Цитата:
|
Цитата:
|
Время: 22:57. |
Время: 22:57.
© OSzone.net 2001-