Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL запрос в чате. Можно ли проще? 
:(
    Опции темы
Opik
Дата 22.2.2005, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 2
Всего: 55



Делаю чат с фильтром сообщений, нужно что бы выбирались только адрессованные мне или мной:
Код
SELECT *
FROM chat
WHERE `login` = 'Opik' and room =1 and lastmsg > 10 OR `to` = 'Opik' and room =1 and lastmsg > 10 OR `private` = 'Opik' and lastmsg > 10
LIMIT 0 , 30

Можно ли проще, не указывая одно условие по 1000 раз?
PM MAIL Skype   Вверх
Mal Hack
Дата 22.2.2005, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



Я бы так сделал:
Код

SELECT *
FROM chat
WHERE `login` = 'Opik' and room =1 and lastmsg > 10 and ( `to` = 'Opik' OR `private` = 'Opik' )

PM ICQ   Вверх
Opik
Дата 22.2.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 2
Всего: 55



Mal Hack
приваты должны доходить и из других комнат.
PM MAIL Skype   Вверх
Mal Hack
Дата 22.2.2005, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



Цитата(Opr @ 22.2.2005, 19:41)
приваты должны доходить и из других комнат.

А Ту только из одной?
Тогда так:
Код

SELECT *
FROM chat
WHERE `login` = 'Opik' and lastmsg > 10 and ( ( room =1 and `to` = 'Opik' ) OR `private` = 'Opik' )
LIMIT 0 , 30

Opr, скажи по русски условия... А то так немножко гадать приходится.
PM ICQ   Вверх
Opik
Дата 22.2.2005, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 2
Всего: 55



Код

SELECT *
FROM chat
WHERE lastmsg > 10 and room = 1 and ( `to` = 'Opik' OR `private` = 'Opik'  or `login` = 'Opik')

перит мну чтото
PM MAIL Skype   Вверх
Mal Hack
Дата 22.2.2005, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



но тогда:

Цитата(Opr @ 22.2.2005, 19:41)
приваты должны доходить и из других комнат.

Не выполняется.

PM ICQ   Вверх
Opik
Дата 22.2.2005, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 2
Всего: 55



ну да, а условия по русски...:

выбрать *
из chat
где id > 10 и комната = 1 и `to` = 'Opik' и `private` = 'Opik' и `login` = 'Opik' или private = Opik
id > 10 - Условие должно выполнятся всегда.
комната = 1 - выполняется всегда, за исключением привата, он может доходить из других комнат.
to и login - всегда, но одновременно не могут. т.е что то одно должно быть:
to or login or private
Мда...я конечно сам не понял что написал... smile))
PM MAIL Skype   Вверх
Mal Hack
Дата 22.2.2005, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

Репутация: 11
Всего: 261



Цитата(Opr @ 22.2.2005, 21:44)
Мда...я конечно сам не понял что написал... smile))

И понимаю так, надо вытащить записи...
1. lastmsg > 10 это в любом случае это не трогаем. (правда не понимаю что это smile)
2. Вытаскиваем из 1 комнаты мессаги с login.

А вот дальше непонятки... В чем разница между to и login?
PM ICQ   Вверх
Irokez
Дата 22.2.2005, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

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



Код

SELECT * FROM chat
WHERE
lastmsg > 10 AND (`private` = 'Opik' OR (`room` =1 AND (`login` = 'Opik' OR `to` = 'Opik')))
LIMIT 0 , 30

PM   Вверх
Opik
Дата 22.2.2005, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 2
Всего: 55



Irokez
ну да, в принципе то и нужно smile)) спасибо smile

Mal Hack
to - кому сказали
login - кто сказал smile
Добавлено @ 23:15
Цитата
1. lastmsg > 10 это в любом случае это не трогаем. (правда не понимаю что это )

я ошибся вместо lastmsg - id. ну что бы не выводить записи которые уже вывел smile
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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