12.03.2015, 20:40 | #1 |
телочка на авке клевая?
Регистрация: 14.09.2008
Адрес: Замкадье.
Сообщений: 1,522
Вес репутации: 267
|
Объеденить 2 запроса к 1 таблице с сортировкой mysql
есть запрос
(SELECT DISTINCT `userid` FROM `mail` WHERE `fromid`=27 AND `sf`<2 ) UNION (SELECT DISTINCT `fromid` FROM `mail` WHERE `userid`=27 AND `ok`<2) ORDER BY `id` DESC LIMIT 0,12 выдает ошибку #1054 - Unknown column 'id' in 'order clause' если убрать ORDER BY `id` DESC то все работает, но нужна сортировка по отдельности запросы работают, но итоговое количество получиться больше 12 Суть запроса такова необходимо выбрать из таблицы уникальные значения пользователей с кем я общался, причем сообщение мог написать я или сообщение могли написать мне Добавлено через 3 минуты Собственно яндекс с гуглом предлагают запрос составить именно так, но я не понимаю почему он не работает так же как и не работает запрос такого вида (SELECT DISTINCT `userid` FROM `mail` WHERE `fromid`=27 AND `sf`<2 ORDER BY `id` DESC) UNION (SELECT DISTINCT `fromid` FROM `mail` WHERE `userid`=27 AND `ok`<2 ORDER BY `id` DESC) ORDER BY `id` DESC LIMIT 0,12 Бес последней сортировки отработает, но отсортировать все равно забудет Добавлено через 17 часов 14 минут Вот забанили ПГ а он знает, что надо было сделать так (SELECT DISTINCT `userid`, `id` FROM `mail` WHERE `fromid`=27 AND `sf`<2 ) UNION (SELECT DISTINCT `fromid`, `id` FROM `mail` WHERE `userid`=27 AND `ok`<2) ORDER BY `id` DESC LIMIT 0,12 Добавлено через 1 час 2 минуты правда все равно корректо не работает
__________________
Оргтехника в Алмаате Купить масло для авто в Москве. Последний раз редактировалось 10012003; 12.03.2015 в 20:40. Причина: Добавлено сообщение |
12.03.2015, 21:41 | #2 |
Мастер
Регистрация: 13.05.2010
Адрес: Nsk
Сообщений: 776
Вес репутации: 190
|
(SELECT DISTINCT `userid`, `fromid`, `id` FROM `mail` WHERE `fromid`=27 AND `sf`<2 )
UNION (SELECT DISTINCT `userid`, `fromid`, `id` FROM `mail` WHERE `userid`=27 AND `ok`<2) ORDER BY `id` DESC LIMIT 0,12 mysql дно.. Последний раз редактировалось Igor V; 12.03.2015 в 21:47. Причина: Добавлено сообщение |
12.03.2015, 21:53 | #3 | |
телочка на авке клевая?
Регистрация: 14.09.2008
Адрес: Замкадье.
Сообщений: 1,522
Вес репутации: 267
|
Цитата:
userid id 1 277 1 276 41 275 73 274 1 273 46 272 73 271 180 270 148 269 81 268 77 267 70 266 Добавлено через 2 минуты тот же результат
__________________
Оргтехника в Алмаате Купить масло для авто в Москве. Последний раз редактировалось 10012003; 12.03.2015 в 21:53. Причина: Добавлено сообщение |
|
12.03.2015, 22:54 | #4 |
Мастер
Регистрация: 13.05.2010
Адрес: Nsk
Сообщений: 776
Вес репутации: 190
|
А точно "уникальные значения пользователей"(поле `userid`) нужны зачем тогда делать вторую выборку где всегда `userid`=27
SELECT DISTINCT `userid` FROM `mail` WHERE (`fromid`=27 AND `sf`<2) OR (`userid`=27 AND `ok`<2) или все таки 12 последних id из таблицы mail нужны? SELECT t1.id FROM mail AS t1 WHERE t1.fromid=27 AND t1.sf<2 LEFT JOIN (SELECT id FROM mail WHERE userid=27 AND ok<2) AS t2 ON t1.id<>t2.id ORDER BY id DESC LIMIT 0,12 Последний раз редактировалось Igor V; 12.03.2015 в 23:02. Причина: Добавлено сообщение |
12.03.2015, 23:07 | #5 | |
телочка на авке клевая?
Регистрация: 14.09.2008
Адрес: Замкадье.
Сообщений: 1,522
Вес репутации: 267
|
вторая выборка нужна так как первая выберает кому я написал, а вторая кто написал мне
Цитата:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN (SELECT id FROM mail WHERE userid=27 AND ok<2) AS t2 ON t1.id<>t2.id ' at line 2
__________________
Оргтехника в Алмаате Купить масло для авто в Москве. |
|
12.03.2015, 23:16 | #6 |
Мастер
Регистрация: 13.05.2010
Адрес: Nsk
Сообщений: 776
Вес репутации: 190
|
Прям хоть ставь себе mssql
А это сожрет? SELECT DISTINCT `userid` FROM ( (SELECT DISTINCT `userid` FROM `mail` WHERE `fromid`=27 AND `sf`<2 ORDER BY `id` DESC LIMIT 0,12) UNION (SELECT DISTINCT `fromid` AS `userid` FROM `mail` WHERE `userid`=27 AND `ok`<2 ORDER BY `id` DESC LIMIT 0,12) ) LIMIT 0,12 |
12.03.2015, 23:36 | #7 | |
телочка на авке клевая?
Регистрация: 14.09.2008
Адрес: Замкадье.
Сообщений: 1,522
Вес репутации: 267
|
Все решено, может кому пригодится
SELECT id, userid FROM ( ( SELECT `userid` AS userid FROM `mail` WHERE `fromid` =27 AND `sf` <2 ) UNION ( SELECT `id` , `fromid` FROM `mail` WHERE `userid` =27 AND `ok` <2 ) ORDER BY id DESC )t GROUP BY userid ORDER BY id DESC От себя спасибо ПГ за помощь Добавлено через 2 минуты Цитата:
#1248 - Every derived table must have its own alias Добавлено через 17 минут ошибся немного SELECT id, userid FROM ( ( SELECT `userid` FROM `mail` WHERE `fromid` =27 AND `sf` <2 ) UNION ( SELECT `id` , `fromid` AS userid FROM `mail` WHERE `userid` =27 AND `ok` <2 ) ORDER BY id DESC )t GROUP BY userid ORDER BY id DESC
__________________
Оргтехника в Алмаате Купить масло для авто в Москве. Последний раз редактировалось 10012003; 12.03.2015 в 23:36. Причина: Добавлено сообщение |
|
13.03.2015, 00:32 | #9 |
телочка на авке клевая?
Регистрация: 14.09.2008
Адрес: Замкадье.
Сообщений: 1,522
Вес репутации: 267
|
да мне тоже не очень нравиться, но вспомогательная таблица не вариант, так как придется для каждого пользователя свою таблицу создавать
__________________
Оргтехника в Алмаате Купить масло для авто в Москве. |
13.03.2015, 00:42 | #10 | |
Мастер
Регистрация: 13.05.2010
Адрес: Nsk
Сообщений: 776
Вес репутации: 190
|
Цитата:
Ну или одна таблица id, userid, sourceid где так же добавлять новую запись для пользователя и удалять последнюю.. Последний раз редактировалось Igor V; 13.03.2015 в 00:47. |
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как перенести строку в таблице в другую БД | Akvas | Разработка и сопровождение сайтов | 2 | 24.09.2013 20:26 |
Объеденить проекты в один | aftersvideo1 | Вопросы от новичков | 1 | 07.11.2010 18:10 |
Скрипт поиска по таблице... | lbmoney | Разработка и сопровождение сайтов | 8 | 13.08.2010 00:52 |
2-а аккаунта объеденить в один, как?? | dfg | Курилка | 2 | 04.06.2008 15:18 |
У ВМ календарь с сортировкой не работает. | 9dVSnVN6 | Ошибки при работе с системой | 0 | 02.06.2008 18:39 |
Часовой пояс GMT +3, время: 00:56.