Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск уникальных значений из нескольких столюцов [3]
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Поиск уникальных значений из нескольких столюцов

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

31. ksedin - 18 Сентября, 2014 - 21:31:07 - перейти к сообщению
Мелкий пишет:
Как чем поможет? Джойните по внешнему ключу и получаете сразу последние сообщения в диалогах.


Вы, видимо, не так поняли) Проблема не в выводе последнего сообщения) Есть таблица с сообщениями, вот ее модель:


class Mail extends \Phalcon\Mvc\Model
{
public $id;

public $sender_user_id;

public $recipient_user_id;

public $text_message;

public $time_send;

public $is_read;
}

Там все сообщения пользователей, мне нужно отловить айди тех пользователей, которые писали запустившему код юзеру и тех, кому писал сам юзер, но эти айди не должны повторяться
32. Мелкий - 18 Сентября, 2014 - 21:55:26 - перейти к сообщению
И всё? Так ответ на этот вопрос был дан ещё в самом начале темы.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT senderUserId, receiverUserId FROM messages WHERE (senderUserId = :uid OR receiverUserId = :uid)

Если всё равно, кто именно кому писал, а только контакты этого пользователя, то:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT IF (senderUserId=:uid, receiverUserId, senderUserId) FROM messages WHERE (senderUserId = :uid OR receiverUserId = :uid)
33. ksedin - 18 Сентября, 2014 - 22:36:35 - перейти к сообщению
Мелкий пишет:
И всё? Так ответ на этот вопрос был дан ещё в самом начале темы.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT senderUserId, receiverUserId FROM messages WHERE (senderUserId = :uid OR receiverUserId = :uid)

Если всё равно, кто именно кому писал, а только контакты этого пользователя, то:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT IF (senderUserId=:uid, receiverUserId, senderUserId) FROM messages WHERE (senderUserId = :uid OR receiverUserId = :uid)


:uid - айди пользователя?
В начале был дан не полный ответ, в частности второй запрос)
(Добавление)
Syntax error, unexpected EOF
Не могу поправить...
34. Sail - 19 Сентября, 2014 - 07:50:02 - перейти к сообщению
ksedin пишет:
Syntax error, unexpected EOF
Не могу поправить...

Где-то раньше открыли блок (скобки какие-нить, кавычки...) и не закрыли его... А парсер неожиданно встретил EOF (символ конца файла).
35. ksedin - 19 Сентября, 2014 - 10:42:44 - перейти к сообщению
Sail пишет:
ksedin пишет:
Syntax error, unexpected EOF
Не могу поправить...

Где-то раньше открыли блок (скобки какие-нить, кавычки...) и не закрыли его... А парсер неожиданно встретил EOF (символ конца файла).


Вы уверенны? Раз по двадцать на дню сталкиваюсь с этой ошибкой и обычно она означает, что блок if не был закрыт

Вот в такой ситуации.
Ошибка в условиях в самом запросе, и я пока не понимаю, как его подкорректироватьНедовольство, огорчение Жду Мелкого
36. Sail - 19 Сентября, 2014 - 10:50:47 - перейти к сообщению
ksedin пишет:
Вы уверенны? Раз по двадцать на дню сталкиваюсь с этой ошибкой и обычно она означает, что блок if не был закрыт

Не знаю, поверите-ли, но фигурная скобка - тоже скобка Улыбка
ksedin пишет:
Ошибка в условиях в самом запросе, и я пока не понимаю, как его подкорректировать

Синтаксис запроса абсолютно корректен.
37. ksedin - 19 Сентября, 2014 - 10:56:25 - перейти к сообщению
Sail пишет:
ksedin пишет:
Вы уверенны? Раз по двадцать на дню сталкиваюсь с этой ошибкой и обычно она означает, что блок if не был закрыт

Не знаю, поверите-ли, но фигурная скобка - тоже скобка Улыбка
ksedin пишет:
Ошибка в условиях в самом запросе, и я пока не понимаю, как его подкорректировать

Синтаксис запроса абсолютно корректен.


Как минимум одну ошибку нашел В ЗАПРОСЕ) После WHERE скобка открывается, но не закрываетсяУлыбка В каком месте она должна закрываться?
38. Мелкий - 19 Сентября, 2014 - 11:03:41 - перейти к сообщению
ksedin пишет:
После WHERE скобка открывается, но не закрывается

?
Мелкий пишет:
SELECT DISTINCT IF (senderUserId=:uid, receiverUserId, senderUserId) FROM messages WHERE (senderUserId = :uid OR receiverUserId = :uid)
39. ksedin - 19 Сентября, 2014 - 11:07:01 - перейти к сообщению
Мелкий пишет:
ksedin пишет:
После WHERE скобка открывается, но не закрывается

?
Мелкий пишет:
SELECT DISTINCT IF (senderUserId=:uid, receiverUserId, senderUserId) FROM messages WHERE (senderUserId = :uid OR receiverUserId = :uid)


И верно... Я рукожоп)
(Добавление)
24 написал 31
24 написал 31
31 написал 24 

В таблице было 3 записи и все три вывелись после этого запроса
40. ksedin - 19 Сентября, 2014 - 12:20:27 - перейти к сообщению
Так... Сделал этот запрос через phpmyadmin, Вам не кажется, что название столбца выглядит как-то странно?
41. Sail - 19 Сентября, 2014 - 12:30:24 - перейти к сообщению
ksedin пишет:
Так... Сделал этот запрос через phpmyadmin, Вам не кажется, что название столбца выглядит как-то странно?

Нормально выглядит Улыбка
Лечится добавлением alias'а. Назовём его, например 'uid1':
CODE (SQL):
скопировать код в буфер обмена
  1. IF (senderUserId=:uid, receiverUserId, senderUserId) AS uid1

И при разборе в php обращаться к элементу в полученном массиве через этот псевдоним.
42. ksedin - 19 Сентября, 2014 - 12:51:55 - перейти к сообщению
Sail пишет:
ksedin пишет:
Так... Сделал этот запрос через phpmyadmin, Вам не кажется, что название столбца выглядит как-то странно?

Нормально выглядит Улыбка
Лечится добавлением alias'а. Назовём его, например 'uid1':
CODE (SQL):
скопировать код в буфер обмена
  1. IF (senderUserId=:uid, receiverUserId, senderUserId) AS uid1

И при разборе в php обращаться к элементу в полученном массиве через этот псевдоним.


У меня модель и обращение к базе через нее, это мне добавить алиас к запросу, а к модели свойство с названием алиаса?
(Добавление)
Сделал так)) Все получилось) Все здоровенное спасибо)

 

Powered by ExBB FM 1.0 RC1