Модераторы: skyboy, SamDark
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно отсортировать по данным другой таблицы 
:(
    Опции темы
maxipub
Дата 6.4.2018, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 504
Регистрация: 22.10.2009

Репутация: 1
Всего: 1



Добрый день!

Запрос:
Код
SELECT field FROM table ORDER BY FIELD (type, (SELECT param FROM sort WHERE ORDER BY position))


Ошибка:
Subquery returns more than 1 row

Как быть?

Нужно отсортировать данные из table, по данным другой таблицы, но с предварительной сортировкой этих же данных. Т.е. заджойнить таблицу и сделать ORDER BY sort.position в данном случае не получится, т.к. нам нужна сортировка не по sort.position, а по sort.param, которые были изначально отсортированы по sort.position...
PM MAIL   Вверх
krundetz
Дата 6.4.2018, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



структуру таблиц и зависимость одной от другой приведите.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Akina
Дата 6.4.2018, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20354
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 104
Всего: 447



Код

SELECT t.field 
FROM table t, sort s
WHERE t.somefield = s.anotherfield
ORDER BY FIELD (t.type, s.param)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
maxipub
Дата 6.4.2018, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 504
Регистрация: 22.10.2009

Репутация: 1
Всего: 1



krundetz, зависимостей нет.

Akina, а где ORDER BY s.position ?

Зависимостей нет. Тут t.somefield = s.anotherfield не требуется. Нужно просто взять значения s.param из sort s, которые предварительно отсортированы по s.position, и эти значения применить к ORDER BY FIELD (t.type, ... - по этой причине, как писал, не вижу возможности использования JOIN. Т.к. это даст в лучше случае сортировку по s.param (ни как предварительно не отсортированных). Или по s.position - но задача не в этом...

Например:
sort
param position
111 1
222 3
333 2

SELECT param FROM sort ORDER BY position ASC => 111, 333, 222 => ORDER BY FIELD (t.type, 111, 333, 222)

Это сообщение отредактировал(а) maxipub - 6.4.2018, 13:08
PM MAIL   Вверх
Akina
Дата 6.4.2018, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20354
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 104
Всего: 447



Мля.

Код

SELECT t.field 
FROM table t, sort s
WHERE t.type = s.param
ORDER BY s.position



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
krundetz
Дата 6.4.2018, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



тогда объединение с отсортированным подзапросом


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
maxipub
Дата 6.4.2018, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 504
Регистрация: 22.10.2009

Репутация: 1
Всего: 1



Akina, неа. smile

Есть таблица sort. В ней такие данные:

param position
111 1
222 3
333 2

Мы сортируем их по position ASC, получаем:
param position^
111 1
333 2
222 3

И теперь берем эти param, которые отсортированы по position ASC, и по ним сортируем данные в другой таблице:

ORDER BY FIELD (t.type, 111, 333, 222)
PM MAIL   Вверх
Akina
Дата 6.4.2018, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20354
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 104
Всего: 447



maxipub, с таблицей sort всё уже понятно. Теперь покажи пример данных в основной таблице, которую надо сортирить, и требуемый результат.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Google
  Дата 25.9.2018, 10:16 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.