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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск уникальных значений из нескольких столюцов [3]

 PHP.SU

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


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

> Без описания
ksedin
Отправлено: 18 Сентября, 2014 - 21:31:07
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Мелкий пишет:
Как чем поможет? Джойните по внешнему ключу и получаете сразу последние сообщения в диалогах.


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


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;
}

Там все сообщения пользователей, мне нужно отловить айди тех пользователей, которые писали запустившему код юзеру и тех, кому писал сам юзер, но эти айди не должны повторяться
 
 Top
Мелкий Супермодератор
Отправлено: 18 Сентября, 2014 - 21:55:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




И всё? Так ответ на этот вопрос был дан ещё в самом начале темы.

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)


-----
PostgreSQL DBA
 
 Top
ksedin
Отправлено: 18 Сентября, 2014 - 22:36:35
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Мелкий пишет:
И всё? Так ответ на этот вопрос был дан ещё в самом начале темы.

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
Не могу поправить...
 
 Top
Sail
Отправлено: 19 Сентября, 2014 - 07:50:02
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




ksedin пишет:
Syntax error, unexpected EOF
Не могу поправить...

Где-то раньше открыли блок (скобки какие-нить, кавычки...) и не закрыли его... А парсер неожиданно встретил EOF (символ конца файла).
 
 Top
ksedin
Отправлено: 19 Сентября, 2014 - 10:42:44
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Sail пишет:
ksedin пишет:
Syntax error, unexpected EOF
Не могу поправить...

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


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

Вот в такой ситуации.
Ошибка в условиях в самом запросе, и я пока не понимаю, как его подкорректироватьНедовольство, огорчение Жду Мелкого
 
 Top
Sail
Отправлено: 19 Сентября, 2014 - 10:50:47
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




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

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

Синтаксис запроса абсолютно корректен.
 
 Top
ksedin
Отправлено: 19 Сентября, 2014 - 10:56:25
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




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

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

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


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



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




ksedin пишет:
После WHERE скобка открывается, но не закрывается

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


-----
PostgreSQL DBA
 
 Top
ksedin
Отправлено: 19 Сентября, 2014 - 11:07:01
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Мелкий пишет:
ksedin пишет:
После WHERE скобка открывается, но не закрывается

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


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

В таблице было 3 записи и все три вывелись после этого запроса
 
 Top
ksedin
Отправлено: 19 Сентября, 2014 - 12:20:27
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Так... Сделал этот запрос через phpmyadmin, Вам не кажется, что название столбца выглядит как-то странно?
Прикреплено изображение (Нажмите для увеличения)
Безымянный.png
 
 Top
Sail
Отправлено: 19 Сентября, 2014 - 12:30:24
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




ksedin пишет:
Так... Сделал этот запрос через phpmyadmin, Вам не кажется, что название столбца выглядит как-то странно?

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

И при разборе в php обращаться к элементу в полученном массиве через этот псевдоним.
 
 Top
ksedin
Отправлено: 19 Сентября, 2014 - 12:51:55
Post Id


Гость


Покинул форум
Сообщений всего: 89
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Sail пишет:
ksedin пишет:
Так... Сделал этот запрос через phpmyadmin, Вам не кажется, что название столбца выглядит как-то странно?

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

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


У меня модель и обращение к базе через нее, это мне добавить алиас к запросу, а к модели свойство с названием алиаса?
(Добавление)
Сделал так)) Все получилось) Все здоровенное спасибо)
 
 Top
Страниц (3): « 1 2 [3]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB