Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из 2-х таблиц, не могу отразить суть в названии темы 
:(
    Опции темы
S.A.P.
Дата 3.1.2006, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Друзья, я плохо знаю SQL, вынужден просить вашей помощи. Запарка с следующем:
Есть 2 таблицы:

comments
id - INTEGER
user_id - INTEGER
text - TEXT
module_id - INTEGER
module_subid - INTEGER

vote
id - INTEGER
user_id - INTEGER
vote - INTEGER
ref_id - INTEGER
ref_subid - INTEGER

Немного поясню назначение:
У меня есть несколько модулей: новости, статьи и т.д. Пользователи должны иметь возможность оставлять к ним комментарии, которые будут храниться в таблице comments. module_id означает ид модуля, к которому комментарий оставлен (статьи, новости и т.д.). module_subid - это внутренний ид модуля - ид статьи, ид новости... В таблице vote храняться все результаты голосований, ref_id - это ид модуля, через который голос был добавлен, например это комментарий, или отдельное головование. ref_subid соответстввенно - это внутренный ид - ид комментария например.

Мммда... так вот, идея состоит в следующем: нужно дать пользователю возможность переголосовывать, при этом старый голос заменяется на новый, для этого нужно определить, голововал ли он или нет.

Короче дано:
module_id
module_subid
ref_id
user_id

нужно определить, есть ли в таблице vote запись, соответствующая комментарию (ref_subid = comments.id), оставленному данным пользователем коментарий должен принадлежать данным module_id и module_subid .

Как такое можно сделать одним запросом?
PM MAIL   Вверх
lovermann
Дата 3.1.2006, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 28.12.2004
Где: Прага

Репутация: нет
Всего: 8



Из задания, совсем не ясно, как эти две таблицы связаны, а по заданию не ясно, зачем ты вообще здесь расписал таблицу "Comments". Мне лично не хватает информации для того, чтобы искать решение.
PM WWW ICQ   Вверх
S.A.P.
Дата 3.1.2006, 03:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Попытался графически всю эту байду представить в аттаче.

Как у меня работат пока:
сначала вызываю
Код

SELECT id
FROM   comments
WHERE  user_id=$u_id     AND
       module_id=$mod_id AND
       module_subid=$mod_subid            


затем для каждого найденного comments_id в цикле

Код

SELECT id
FROM   votes
WHERE  ref_id=$ref_id AND
       ref_subid=$comments_id         


если хоть где - то запись встречается, значит пользователь уже голосовал в данной новости.

Надо тоже самое одним запросом.

Это сообщение отредактировал(а) S.A.P. - 3.1.2006, 03:25

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  tabl.PNG 8,09 Kb
PM MAIL   Вверх
Illuminaty
Дата 3.1.2006, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: 3
Всего: 56



Если я правильно понял, то попробуй следующее...
Если дано, что переголосовать должен пользователь, у которого user_id = UI,
по модулю module_id = MI, module_subid = MSI, то тогда id голосования находится запросом
Код

select `vote`.`id` from `vote`, `comments`
where (`ref_subid` = `comments`.`id` and `module_id` = MI and `module_subid` = MSI and `vote`.`user_id` = UI and `vote`.`ref_id` = RI)


PM MAIL ICQ   Вверх
Illuminaty
Дата 3.1.2006, 03:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: 3
Всего: 56




[offtop]
И что это Казанцам не спится? smile
[/offtop]


PM MAIL ICQ   Вверх
S.A.P.
Дата 3.1.2006, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Блин, точно! smile

Мда праздник выдался тяжелым smile .
Добавлено @ 04:04
Цитата(Illuminaty @ 3.1.2006, 03:56)
И что это Казанцам не спится?
по инерции после НГ smile .
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.