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 :: выборка записей из БД без повтора

 PHP.SU

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


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

> Описание: как вывести все результаты выборки без повтора
fiksik
Отправлено: 20 Апреля, 2016 - 07:00:41
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2016  


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




здравствуйте, уважаемые форумчане! Стараюсь я освоить PHP потихоньку и вот над одной задачкой бьюсь уже неприлично долго, возможно у меня подход просто неверный, вот и прошу помощи.
Итак, есть у меня 2 таблицы: 'users' и 'table'.
В таблице table такие столбцы:
'id' - id сообщения
' author' - автор сообщения
'recipient' -получатель сообщения

В таблице 'users' такие столбцы:
'id'
'login'
вопрос в том, что я не могу вывести список всех пользователей, с кем веду переписку без повтора. Т.е я вывожу login человека , кто мне писал например, но он повторяется столько раз, сколько раз писал.

<?php

$result = $db->query("SELECT * FROM `table` WHERE `author` = '$_SESSION[id]' or `recipient` = '$_SESSION[id]'");
$array = $result->fetch(PDO::FETCH_ASSOC);

do{
if($array['author']==$_SESSION['id']){
$result2 = $db->query("SELECT * FROM users WHERE id = '$array[recipient]'");
$array2 = $result2->fetch(PDO::FETCH_ASSOC);
}
if($array['recipient']==$_SESSION['id']){
$result2 = $db->query("SELECT * FROM users WHERE id = '$array[author]'");
$array2 = $result2->fetch(PDO::FETCH_ASSOC);
}
echo $array2['login'] .$array['message']."\n<br>";
}
While($array = $result->fetch(PDO::FETCH_ASSOC));


?>
я пробовал разные варианты, но получалось по результату так же.
 
 Top
3d_killer
Отправлено: 20 Апреля, 2016 - 09:56:34
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




 
My status
 Top
fiksik
Отправлено: 20 Апреля, 2016 - 13:12:36
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2016  


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




я пробовал так:
$result = $db->query("SELECT DISTINCT * FROM `table` WHERE `author` = '$_SESSION[id]' or `recipient` = '$_SESSION[id]'");
$array = $result->fetch(PDO::FETCH_ASSOC);
ничего не поменялось
 
 Top
Viper
Отправлено: 20 Апреля, 2016 - 13:47:40
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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






-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
fiksik
Отправлено: 20 Апреля, 2016 - 16:08:09
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2016  


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




я не пойму что я делал не так, но пробовал я и GROUP BY
$result = $db->query("SELECT * FROM `table` WHERE `author` = '$_SESSION[id]' or `recipient` = '$_SESSION[id]' GROUP BY author");
$array = $result->fetch(PDO::FETCH_ASSOC);
 
 Top
3d_killer
Отправлено: 20 Апреля, 2016 - 16:11:15
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT(author),* FROM

(Добавление)
[quote=Viper][/quote] Думаю группировка в данной ситуации будет помедленнее
(Добавление)
PHP:
скопировать код в буфер обмена
  1. "SELECT DISTINCT(author),* FROM `table` WHERE `author` = '$_SESSION[id]' or `recipient` = '$_SESSION[id]'"

(Отредактировано автором: 20 Апреля, 2016 - 16:18:47)

 
My status
 Top
fiksik
Отправлено: 21 Апреля, 2016 - 06:16:47
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2016  


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




SELECT DISTINCT(author),* FROM
Получилось! Большое спасибо за помощь!
 
 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