SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.01.2014 21:31:51

saharin
Участник
Зарегистрирован: 22.10.2013
Сообщений: 22

Не работает сортировка в подзапросе :(

"SELECT a.*, GROUP_CONCAT(CONCAT_WS(',',b.id, b.address, b.name, b.phones, b.comment) SEPARATOR ';') AS bid
FROM master AS a LEFT JOIN bid AS b ON (b.id, b.address, b.name, b.phones, b.comment)
IN (SELECT id, address, name, phones, comment FROM bid WHERE master_id = a.id AND status IN('1', '2', '3', '7') AND date <= CURDATE() ORDER BY time ASC)
WHERE a.`limit` = 0
AND a.output NOT LIKE '%".date('d')."%'
".(isset($_GET["mtypes"]) && $_GET["mtypes"] != 0 ? "AND a.type LIKE '%".$_GET["mtypes"]."%'" : "")."
GROUP BY a.id ASC"

подскажите пожалуйста

Неактивен

 

#2 16.01.2014 21:37:42

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Не работает сортировка в подзапросе :(

А ошибка какая? Там точно time, а не date?

Неактивен

 

#3 16.01.2014 21:56:14

saharin
Участник
Зарегистрирован: 22.10.2013
Сообщений: 22

Re: Не работает сортировка в подзапросе :(

ошибки не выдает, просто не сортирует, и все sad
там должно быть ORDER BY date ASC, time ASC
сортировка вообще не по каких полях не работает

Отредактированно saharin (16.01.2014 22:01:59)

Неактивен

 

#4 16.01.2014 22:03:46

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Не работает сортировка в подзапросе :(

У Вас запрос IN - для него порядок в списке не важен. Если пишете

WHERE ID IN (1,2,3,4,5)
, то это не даст отсортированные ID - они будут в произвольном порядке. Замените на JOIN и сделайте общую сортировку.

Неактивен

 

#5 16.01.2014 22:10:20

saharin
Участник
Зарегистрирован: 22.10.2013
Сообщений: 22

Re: Не работает сортировка в подзапросе :(

vasya написал:

Акутогава-сан, прошу простить мне слабоумие!

Но зачем там сортировка? И как определить работает она или нет? В чем должна выражаться её работа?

я потом разбиваю на массив и вывожу раздельно результаты

Неактивен

 

#6 16.01.2014 22:12:14

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает сортировка в подзапросе :(

saharin написал:

vasya написал:

Акутогава-сан, прошу простить мне слабоумие!

Но зачем там сортировка? И как определить работает она или нет? В чем должна выражаться её работа?

я потом разбиваю на массив и вывожу раздельно результаты

Это был намек на то, что в in подзапросе сортировка смысла не имеет. Но меня опередили с ответом.

Неактивен

 

#7 16.01.2014 22:22:26

saharin
Участник
Зарегистрирован: 22.10.2013
Сообщений: 22

Re: Не работает сортировка в подзапросе :(

"SELECT a.*, GROUP_CONCAT(CONCAT_WS(',',b.id, b.address, b.name, b.phones, b.comment) SEPARATOR ';') AS bid
FROM master AS a LEFT JOIN bid AS b
ON b.master_id = a.id AND b.status IN('1', '2', '3', '7') AND b.date <= CURDATE()
WHERE a.`limit` = 0
AND a.output NOT LIKE '%".date('d')."%'
".(isset($_GET["mtypes"]) && $_GET["mtypes"] != 0 ? "AND a.type LIKE '%".$_GET["mtypes"]."%'" : "")."
GROUP BY a.id ASC"

как сюда добавить сортировку при выборе b столбцов

Неактивен

 

#8 16.01.2014 22:31:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает сортировка в подзапросе :(

Что-то я теряю нить ваших рассуждений и не понимаю что значит "сюда добавить сортировку при выборе b столбцов"

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

Неактивен

 

#9 17.01.2014 00:37:44

saharin
Участник
Зарегистрирован: 22.10.2013
Сообщений: 22

Re: Не работает сортировка в подзапросе :(

vasya написал:

Что-то я теряю нить ваших рассуждений и не понимаю что значит "сюда добавить сортировку при выборе b столбцов"
Давайте вы приведете тестовый набор данных и покажите какой результат должен быть на нем и почему.

выбираются мастера(таблица master a) которые не выходные сегодня (AND a.output NOT LIKE '%".date('d')."%') и ихние заявки (таблица bid b) со соответствующим статусом и датой меньшей или равной сегодняшней (ON b.master_id = a.id AND b.status IN('1', '2', '3', '7') AND b.date <= CURDATE())

столбцы заявок объединяются в одну строку, а потом разбиваются при выводе

Отредактированно saharin (17.01.2014 00:40:41)

Неактивен

 

#10 17.01.2014 01:09:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает сортировка в подзапросе :(

А сортировка где нужна? Внутри group_concat? Тогда
http://dev.mysql.com/doc/refman/5.6/en/ … oup-concat

Неактивен

 

#11 17.01.2014 01:45:47

saharin
Участник
Зарегистрирован: 22.10.2013
Сообщений: 22

Re: Не работает сортировка в подзапросе :(

vasya написал:

А сортировка где нужна? Внутри group_concat? Тогда
http://dev.mysql.com/doc/refman/5.6/en/ … oup-concat

как тут правильно вставить сортировку? GROUP_CONCAT(CONCAT_WS(',',b.id, b.address, b.name, b.phones, b.comment, b.time) SEPARATOR ';')

Неактивен

 

#12 17.01.2014 01:50:09

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает сортировка в подзапросе :(

Перед ключевым словом separator как указано в доке.

Неактивен

 

#13 17.01.2014 13:07:45

saharin
Участник
Зарегистрирован: 22.10.2013
Сообщений: 22

Re: Не работает сортировка в подзапросе :(

огромнейшие спасибо Вам многоуважаемые гуру!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson