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 :: Получение Уникальных id

 PHP.SU

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


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

> Описание: Исходя из 1 параметра получить уникальные id по 2 столбцам в таблице.
alexxorlovv
Отправлено: 16 Мая, 2014 - 11:53:11
Post Id



Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Сент. 2013  
Откуда: Москва


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




Добрый День.
Есть задача копаюсь второй день.
Весь инет перекопал - не получается.

Суть задачи:
Есть таблица:

Нажмите для увеличения

Нужно найти все строки где sender_user = 1 или user_recipient = 1 Они должны быть в одиночном варианте(DISTINCNT\GROUP BY)
Включая он должен вытаскивать только последнюю уникальную строку.
Таким должен быть вывод по скрину в таблице:

user_sender | user_recipient
------------|---------------
6 | 1
1 | 7
1 | 8
1 | 9
 
 Top
Krava
Отправлено: 16 Мая, 2014 - 13:34:24
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2013  


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




А если сложить и сгруппировать по сумме результат ?
 
 Top
Panoptik
Отправлено: 16 Мая, 2014 - 13:49:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `tbl`
  2. WHERE id IN(
  3.   SELECT MAX(id)
  4.     FROM `tbl`
  5.     GROUP BY sender_id, recipient_id
  6. ) AND (sender_id = 1 OR recipient_id = 1)


примерно так

(Отредактировано автором: 16 Мая, 2014 - 13:53:17)



-----
Just do it
 
 Top
alexxorlovv
Отправлено: 16 Мая, 2014 - 17:50:14
Post Id



Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Сент. 2013  
Откуда: Москва


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




Panoptik Отлично почти то что нужно. Есть только 1 нюанс -
Строки могут быть sender = 1 recipient = 6 И sender = 6 recipient = 1
То есть они могут быть обратными. Суть в том чтобы как то убрать эти повторения.
У меня получилось почти тоже самое только с получением идентификаторов без остольных данных. А этот запрос решает 2 проблемы. Супер.
(Добавление)
Вы оба правы.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `message`
  2. WHERE id IN(
  3. SELECT  MAX(id)
  4. FROM `message`
  5. WHERE user_sender = 1 OR user_recipient = 1
  6. GROUP BY user_sender+user_recipient
  7. )

(Добавление)
допилил с учетом Удаленных
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `message`
  2. WHERE id IN(
  3. SELECT  MAX(id)
  4. FROM `message`
  5. WHERE (user_sender = 1 AND is_delete_sender = 0) OR (user_recipient = 1 AND is_delete_recipient = 0)
  6. GROUP BY user_sender+user_recipient
  7. )

(Отредактировано автором: 16 Мая, 2014 - 18:58:51)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB