|
|
|
| Начал делать внутренюю почту на сайте. Думал что легко, но что то не сообразить самому...может просто время уже позднее... )
Значит есть таблица с полями кто пишет - кому пишет.
....
`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. | |
|
|
|
|
|
|
|
для: skor
(01.06.2009 в 04:12)
| | SELECT DISTINCT `where` FROM tbl WHERE `from`=2
SELECT `where` FROM tbl GROUP BY `where` WHERE `from`=2 | |
|
|
|
|
|
|
|
для: Valick
(01.06.2009 в 09:24)
| | Спасибо, но ваши запросы не подходят.
Необходимо выбрать уникальные id сразу из двух столбцов `from` и `where`.
Например:
`from` `where`
2 1 # тут должны получить 1
5 2 # тут должны получить 5
2 6 # тут 6 и т.д.
|
| |
|
|
|
|
|
|
|
для: skor
(01.06.2009 в 10:50)
| | сделайте второй запрос
SELECT DISTINCT `from` FROM tbl WHERE `where`=2
или Вам непременно нужно сделать это одним запросом? | |
|
|
|
|
|
|
|
для: Valick
(01.06.2009 в 11:04)
| | Одним. | |
|
|
|
|
|
|
|
для: skor
(01.06.2009 в 11:14)
| | >Одним.
по какой причине? | |
|
|
|
|
|
|
|
для: Trianon
(01.06.2009 в 11:36)
| | >>Одним.
>по какой причине?
Еще будет много других запросов, так что чемменьше тем лучше. | |
|
|
|
|
|
|
|
для: skor
(01.06.2009 в 11:39)
| | Это не аргумент.
Два простых запроса лучше чем один , но в десять раз более сложный. | |
|
|
|
|
|
|
|
для: 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
сильно не уверен конечно, но попробуйте)) | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|