Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выбор уникальных значений из двух столбцов одной таблицы.
 
 автор: skor   (01.06.2009 в 04:12)   письмо автору
 
 

Начал делать внутренюю почту на сайте. Думал что легко, но что то не сообразить самому...может просто время уже позднее... )
Значит есть таблица с полями кто пишет - кому пишет.

....
`from` INT(10) UNSIGNED NOT NULL, 
`where` INT(10) UNSIGNED NOT NULL,
`msg` TEXT....

Заполним ее например так

1 - 2
2 - 1
3 - 2
2 - 3
2 - 4

Наш id будет 2. Нужно сделать список людей с которыми я общаюсь, id 1, 3 и 4.
Т.е. получить DISTINCT значения в соседнем поле от 2.

  Ответить  
 
 автор: Valick   (01.06.2009 в 09:24)   письмо автору
 
   для: skor   (01.06.2009 в 04:12)
 

SELECT DISTINCT `where` FROM tbl WHERE `from`=2

SELECT `where` FROM tbl GROUP BY `where` WHERE `from`=2

  Ответить  
 
 автор: skor   (01.06.2009 в 10:50)   письмо автору
 
   для: Valick   (01.06.2009 в 09:24)
 

Спасибо, но ваши запросы не подходят.
Необходимо выбрать уникальные id сразу из двух столбцов `from` и `where`.
Например:
 
     `from`     `where`
       2          1             # тут должны получить 1
       5          2             # тут должны получить 5
       2          6             # тут 6 и т.д.

  Ответить  
 
 автор: Valick   (01.06.2009 в 11:04)   письмо автору
 
   для: skor   (01.06.2009 в 10:50)
 

сделайте второй запрос
SELECT DISTINCT `from` FROM tbl WHERE `where`=2

или Вам непременно нужно сделать это одним запросом?

  Ответить  
 
 автор: skor   (01.06.2009 в 11:14)   письмо автору
 
   для: Valick   (01.06.2009 в 11:04)
 

Одним.

  Ответить  
 
 автор: Trianon   (01.06.2009 в 11:36)   письмо автору
 
   для: skor   (01.06.2009 в 11:14)
 

>Одним.
по какой причине?

  Ответить  
 
 автор: skor   (01.06.2009 в 11:39)   письмо автору
 
   для: Trianon   (01.06.2009 в 11:36)
 

>>Одним.
>по какой причине?
Еще будет много других запросов, так что чемменьше тем лучше.

  Ответить  
 
 автор: Trianon   (01.06.2009 в 12:44)   письмо автору
 
   для: skor   (01.06.2009 в 11:39)
 

Это не аргумент.
Два простых запроса лучше чем один , но в десять раз более сложный.

  Ответить  
 
 автор: Valick   (01.06.2009 в 11:36)   письмо автору
 
   для: skor   (01.06.2009 в 11:14)
 

SELECT *
FROM ((SELECT DISTINCT(`where`) AS dd
FROM tbl
WHERE `from`=2) AS wh
UNION
(SELECT DISTINCT(`from`) AS dd
FROM tbl
WHERE `where`=2) AS fr) AS tt

сильно не уверен конечно, но попробуйте))

  Ответить  
 
 автор: skor   (01.06.2009 в 11:42)   письмо автору
 
   для: Valick   (01.06.2009 в 11:36)
 

>SELECT *
> FROM ((SELECT DISTINCT(`where`) AS dd
> FROM tbl
> WHERE `from`=2) AS wh
> UNION
> (SELECT DISTINCT(`from`) AS dd
> FROM tbl
> WHERE `where`=2) AS fr) AS tt
>
>сильно не уверен конечно, но попробуйте))


Спасибо, только он и без дистинкта повторения отбрасывает )
вот что получилось:


SELECT * FROM `user` WHERE `id` 
IN (
SELECT `from` AS `uid` FROM `mess` WHERE `where` =2 AND `isread` = false
UNION 
SELECT `where` AS `uid` FROM `mess` WHERE `from` =2 AND `isread` = false
)
LIMIT 0 , 30

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования