|
|
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Есть две связанные таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Нужно получить результат в виде списка: группа (отсортированы по названию), пользователи в ней (так же отсортированы по названию), след. группа + пользователи и т.д. Запрос вида Код: sql 1. 2. 3. дает результат в виде: name0Group-30Группа-10Группа-20ug-11ug-21ug-2-21ug-31 а надо, чтобы было так: name0Group-30ug-31Группа-10ug-11Группа-20ug-21ug-2-21 Как этого добиться? Помогите модифицировать запрос, пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 14:02:25 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Типа Код: sql 1. 2. 3. 4. 5. 6. 7. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 16:43:14 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Akina, не то получается, к сожалению: nameis_userГруппа-10ug-11Group-30ug-22ug-2-22Группа-20ug-33 Да, юзеры распределились по группам, но в Группа-2 попал юзер из Group-3, и наоборот. И нет сортировки по названиям (группы/юзеры). Должно быть так: nameis_userGroup-30ug-33Группа-10ug-11Группа-20ug-22ug-2-22 Что-то надо еще подшаманить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 08:48:56 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Akina, извнияюсь, чуть сам ошибся - юзеры распределились по группам как надо, вот результат Вашего запроса: nameis_userГруппа-10ug-11Group-30ug-32Группа-20ug-23ug-2-23 Осталось только отсортировать по названиям, как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 08:54:42 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Не, ну чё как дети-то? Неужели так трудно изменить условие сортировки, и в CASE сортировать не по идентификатору группы, а по её имени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 09:30:03 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Akina, ну естественно, попробовал изменить CASE. Но это не помогает. Нужно отсортировать как группы, так и юзеров внутри группы. И это не получается :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 09:44:38 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
LiYingну естественно, попробовал изменить CASE. Но это не помогает.Ну покажи, КАК изменял, и обоснуй, почему именно ТАК... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 12:34:57 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Akina, Попробовал сортировать по имени так: Код: sql 1. 2. 3. 4. 5. 6. 7. но так просто сортируется по имени, что и правильно, т.к. имя не привязано к группе или пользователю. А вот как сортировать сразу и группы и юзеров внутри группы, не соображу... Пробовал и так: Код: sql 1. 2. 3. 4. 5. 6. 7. но и тут не тот результат :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 13:25:11 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
LiYing Код: sql 1. Ну тут даже и сказать-то нечего... Вместо того, чтобы разобраться досконально и понять, почему я дал именно такое выражение сортировки, Вы пытаетесь без понимания сути, тупо, методом тыка, что-нибудь поменять - авось получится... а вот не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 13:38:47 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Akina, я разбирался - у вас сортировка сначал идет по условию "CASE sq.id_group WHEN 0 THEN sq.id ELSE sq.id_group END", затем по столбцу sq.id_group. Разве не так? Это выводит группы с их пользователями - да, но в хаотичном порядке. Но какое еще вписать условие, чтобы сортировать сразу и группы и юзеров внутри группы - я не знаю, перепробовал уже десятки вариантов, не получается... Может быть, вы не обращали внимания на подчеркнутое условие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 14:07:24 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Akina, до того уже доразбирался с вашим запросом, что совсем перестал понимать его работу, впору застрелиться... %) Вот давайте посмотрим пошагово: 1) так выглядит результат запроса БЕЗ ORDER BY , зеленым выделен виртуальный столбец значений CASE; 2) это уже после ORDER BY CASE sq.id_group WHEN 0 THEN sq.id ELSE sq.id_group END , как бы понятно - произошла сортировка по возрастанию по зеленому столбцу CASE; 3) это после добавления сортировки по столбцу sq.id_group , кстати почему используется он, а не is_user ? Они ведь равны? И вот эта последняя сортировка мне не понятна, как так последовательность значений 1 0 0 2 0 3 3 отсортировалась в 0 1 0 2 0 3 3 ??? Сорри, если туплю, но голова не варит уже :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 16:34:19 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
LiYingя разбирался - у вас сортировка сначал идет по условию "CASE sq.id_group WHEN 0 THEN sq.id ELSE sq.id_group END", затем по столбцу sq.id_group. Разве не так?Разобраться - это понять, не ЧТО, а ПОЧЕМУ ТАК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 16:56:34 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Akina, ну объясните, почему так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 16:59:29 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
AkinaLiYingя разбирался - у вас сортировка сначал идет по условию "CASE sq.id_group WHEN 0 THEN sq.id ELSE sq.id_group END", затем по столбцу sq.id_group. Разве не так?Разобраться - это понять, не ЧТО, а ПОЧЕМУ ТАК. ПОЧЕМУ ТАК - потому, что сначала создается виртуальный столбец, в котором и группа, и ее пользователи имеют один id. Сортировкой по нему получаем упорядоченный список групп и их пользователей. А следующей сортировкой по столбцу sq.id_group группа ставится в списке выше пользователя. Правильно объяснил? Вопрос про сортировку по названиям остается открытым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 18:38:25 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Всё правильно. Но на первом этапе не только записи собираются группы, но и эти группы сортируются в порядке возрастания идентификатора группы. Значит, нужно сортировать не по идентификатору, а по наименованию. Причём именно наименванию группы. А чтобы это можно было сделать, нужно, чтобы подзапрос отдавал такое поле - так что потребуется его модифицировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2015, 20:59:38 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
Akina, изменил подзапрос, чтобы отдавал отдельно имена групп и пользователей. Добавил сортировку по имени группы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И ничего не поменялось, что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 09:46:51 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
AkinaЗначит, нужно сортировать не по идентификатору, а по наименованию. Причём именно наименванию группы. LiYing Код: sql 1. 2. Ну и?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 10:07:03 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 10:12:58 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
всё, помощь кончилась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 11:37:52 |
|
||
|
Запрос с объединением и сортировкой
|
|||
|---|---|---|---|
|
#18+
LiYing Код: sql 1. отсортировать по имени группы, пронумеровать их в этом порядке , полученный номер назвать "ид". Соответственно для выборки из юзеров подставить полученный номер вместо парент_ид. А уже из полученных данных делать выборку как в 17262164 / 17270999 . ЗЫ. А вообще это скорее задача для клиента :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2015, 12:49:49 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38880929&tid=1833561]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 318ms |

| 0 / 0 |
