PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (6): « 1 [2] 3 4 5 6 »

> Найдено сообщений: 89
ksedin Отправлено: 18 Сентября, 2014 - 21:11:14 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Решения задачи в лоб слишком тяжеловесны. Сделайте отдельно таблицу диалогов, ссылающуюся на последнее сообщение в переписке.[/quote]
Пока не совсем понимаю, как мне это поможет, можно подробней?
ksedin Отправлено: 18 Сентября, 2014 - 20:19:18 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Sail пишет:

Выбираем из таблицы для одного получателя (myid) всех отправителей и время последнего сообщения.


Выходит, что если пользователь сам отправил сообщение, не получив при этом ответа - диалог не будет отображаться?
ksedin Отправлено: 18 Сентября, 2014 - 18:30:56 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Panoptik пишет:
ну с диалогами тут есть несколько ситуаций
1) вам нужно отобразить список диалогов для конкретного пользователя (того кто сейчас авторизирирован)
2) нужно отобразить сообщения по конкретному диалогу для конкретного пользователя

мне в голову приходят решения с юнионами джоинами и групировками, так что задачка действительно нетривиальная

для вывода списков диалогов у меня было примерно такое решение
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.             IF(senderUserId = {$user->id},receiverUserId,senderUserId) dialogUserId, `text`,
  3.             MAX(createdAt) createdAt, isRead
  4.           FROM message
  5.             WHERE (senderUserId = {$user->id} OR receiverUserId = {$user->id})
  6.             GROUP BY dialogUserId
  7.             ORDER BY createdAt DESC
  8.             LIMIT 10

Вопрос:
Что хранится в dialogUserId? И `text` - это текст сообщения?
ksedin Отправлено: 18 Сентября, 2014 - 17:45:21 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Sail пишет:

Так ники, или диалоги?!
В итоге на странице должны быть все последние сообщения, обращенные "мне" (одному пользователю с id === user_id от разных пользователей с id === user2_id)?
Или все последние сообщения, обращенные всем пользователям?
А табличка из первоначального поста точно содержит лишь два поля и просто фиксирует факт наличия сообщения от user2_id к user_id?!


Мне нужно, как в ВК, ники. Выведу сам, мне нужно лишь айди выловить.
Разумеется, что таблице содержит больше значений, просто убрал воду и оставил только проблему. Модель таблицы вот:
PHP:
скопировать код в буфер обмена
  1. class Mail extends \Phalcon\Mvc\Model
  2. {
  3.     public $id;
  4.    
  5.     public $sender_user_id;
  6.    
  7.     public $recipient_user_id;
  8.  
  9.     public $text_message;
  10.  
  11.     public $time;
  12. }
ksedin Отправлено: 18 Сентября, 2014 - 16:27:34 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
RickMan пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. ... ORDER BY id DESC LIMIT 1;
- если нужно последнее из вот того что получилось то просто добавь это..


Нет, мне нужно все, но по одному
ksedin Отправлено: 18 Сентября, 2014 - 16:14:14 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
RickMan пишет:
А какая именно? Запрос выдал:
Цитата:
1 2
2 1

Почему именно одна? И какая одна?


Я делаю личные сообщения на сайте, записываю все сообщения в одну таблицу.
На одной странице мне нужно вывести все диалоги, то есть ники тех, с кем обался пользователь.
Цитата:
1 2
2 1


В этом случае снчачала пользователь с id 2 шлет сообщение пользователю с id 1, потом пользователь с id 1 шлет сообщение пользователю с id 2.
По сути, фигурируют лишь два пользователя и мне нужна только одна запись та, у которой время отправки позже, но это просто, главное, чтоб отловить лишь одну запись
ksedin Отправлено: 18 Сентября, 2014 - 14:48:32 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
RickMan пишет:
Ну пример того, какой массиы должен получитсья в конце, и чтобы не пришлось по нему пробегаться еще раз в php. Думаю проблема решаемая на уровне запроса.


Блин, в голове каша... Вроде все проблемы уже решились) Лучше сейчас реализовать попробую, так легче все понять)
(Добавление)
RickMan пишет:
Ну пример того, какой массиы должен получитсья в конце, и чтобы не пришлось по нему пробегаться еще раз в php. Думаю проблема решаемая на уровне запроса.


Нашел.
Таблица:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. user1 | user2
  3. 1          2
  4. 2          1
  5. 2          1
  6. 1          2
  7.  


Нужно, чтоб только одна строка из них отображалась
ksedin Отправлено: 18 Сентября, 2014 - 14:03:09 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Sail пишет:
ksedin пишет:
но убрать такие строки я собирался на уровне пхп

Как php сможет убрать то, чего ему из базы не подадут на блюдечке?!
Тот запрос ведь не вернёт отсутствующие строки...


Из базы придет массив со строчками, я переберу его forech`ем и уберу строки, где user_id будет совпадать с user2_id
(Добавление)
RickMan пишет:
Пример можно?

Это кому?
ksedin Отправлено: 18 Сентября, 2014 - 13:53:16 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Sail пишет:
Ну, если значение user_id из множества соответствующих user2_id фиолетово


Вообще не фиолетово, но убрать такие строки я собирался на уровне пхпУлыбка А на уровне sql это возможно?
ksedin Отправлено: 18 Сентября, 2014 - 13:43:45 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
RickMan пишет:
Можешь попробовать что-то типа такого...
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT(id_1), id_2 FROM test GROUP BY id_2

И да, пример который выше не работает, проверил у себя на тестовой таблице... distinct срабатывает на первый солбец а второй просто делает выборку...
И нет, у меня не месячные. Научитесь просто гуглить или изъявлять нормально мысли. (ну или хотя бы грамотно)


Вау, работает) Спасибо большое)
(Добавление)
Sail пишет:
Мелкий пишет:
ksedin пишет:
Я так делал уже, в первого, указанной после distinct он ищет уникальные записи, а вот со второго он просто берет значение из строки, которую нашел distinct

Докажите.

Разночтение в том, что distinct удаляет "дублирующиеся строки в результирующем наборе данных".
Но ТС хочет странного, то есть вовсе не этого!
ksedin пишет:
Например есть такая таблица:
CODE (htmlphp):
скопировать код в буфер обмена
  1. user_id | user2_id
  2. 1             2
  3. 3             2
  4. 4             5
  5.  
Мне нужно сделать запрос к этой таблице, чтобы уникальные строки отбирались по двум столбцам. В данном случа запрос должен вернуть только первую и третью запись.

...
Кстати, а почему именно первую и третью, а не вторую и третью?!


Потому что первая строка попадет обработчику первей
ksedin Отправлено: 18 Сентября, 2014 - 13:32:36 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Мелкий пишет:
ksedin пишет:
Я так делал уже, в первого, указанной после distinct он ищет уникальные записи, а вот со второго он просто берет значение из строки, которую нашел distinct

Докажите.


Комментарий ниже и http://www[dot]w3schools[dot]com/sql/sql_distinct[dot]asp - попробуйте вот здесь
ksedin Отправлено: 18 Сентября, 2014 - 13:07:02 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Мелкий пишет:
Distinct отсекает повторяющиеся resultset, т.е. то, что указано в select.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT user_id, user2_id FROM ...


Я так делал уже, в первого, указанной после distinct он ищет уникальные записи, а вот со второго он просто берет значение из строки, которую нашел distinct
(Добавление)
RickMan пишет:
Плохо искали. Первый же запрос в гугле "dictinct mysql" выдал вот что:
http://www[dot]mysql[dot]ru/docs/man/DIS[dot][dot][dot]ptimisation[dot]html - и примеры, и описание... Неужели трудно научиться гуглить? Или вы думаете по такому вопросу в интернете нет документации?


Во-первых, это не то.
Во-вторых, у Вас месячные? Очень агрессивно ведете себя
ksedin Отправлено: 18 Сентября, 2014 - 12:15:52 • Тема: Поиск уникальных значений из нескольких столюцов • Форум: SQL и Архитектура БД

Ответов: 41
Просмотров: 326
Привет всем)
Мне нужны из одной таблицы в бд вытащить уникальные строки по двум значениям.
Например есть такая таблица:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. user_id | user2_id
  3. 1             2
  4. 3             2
  5. 4             5
  6.  


Мне нужно сделать запрос к этой таблице, чтобы уникальные строки отбирались по двум столбцам. В данном случа запрос должен вернуть только первую и третью запись.
Это возможно? Я знаю, есть такая штука, как distinct, но она ищет только по уникальности одного столбца, а я слышал, что в нем можно составлять двойные условия, но как это сделать - не нашел
ksedin Отправлено: 26 Июня, 2014 - 22:06:58 • Тема: Бандл авторизации на phalcon • Форум: CMS и фреймворки

Ответов: 0
Просмотров: 1327
Изучаю вот фалкон и столкнулся с такой проблемой - скачал бандл авторизации, там красивый код, вроде по уму все, но вот беда, когда пытаюсь зарегистрироваться - апач помирает.
Дрянь такая происходит и на ксампе и на опен сервере, бандл прикрепил файлом, помогите пожалуйста)
ksedin Отправлено: 17 Апреля, 2014 - 23:39:22 • Тема: phalcon? запрос к базе • Форум: CMS и фреймворки

Ответов: 0
Просмотров: 767
Приветствую, у меня проблема с запросами к базе вот код запроса:
PHP:
скопировать код в буфер обмена
  1.  
  2. $coincidence = users::find("id = '1'");
  3. $this->view->setVar("login", $coincidence->username);


И переменная приходит пустой, в то же время такой запрос работает:
PHP:
скопировать код в буфер обмена
  1.  
  2. $coincidence = users::find();
  3.  

Не понимаю, в чем проблема?

Страниц (6): « 1 [2] 3 4 5 6 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB