Я использую запрос, предложенный в этом посте https://stackoverflow.com/a/51816820/6822845, чтобы перечислить содержимое моей таблицы. Это работает очень хорошо, я получаю список каждого раздела с разделением запятыми его подразделов в другом столбце, чтобы я мог взорвать его и преобразовать в массив. Моя проблема в том, что в моей таблице разделов (упомянутой в другом сообщении, приведенном выше) есть еще один столбец с именем «sorder», в котором хранится порядок отображения. Я не знаю почему, но я не могу выводить его, когда столбец выбирает каждый раз, когда 0.
SELECT sections.sorder as sorder ,section_titel as t1,
GROUP_CONCAT(sub_section_titel) as t2
FROM sections
LEFT JOIN sub_sections ON section_id = sId
GROUP BY t1
ORDER by sorder
Каждый раз, когда я запускаю его, сортировщик отображается как «0». Но это не 0. Странно то, что я могу прочитать столбец «iorder», который находится в моей таблице sub_section. Но столбец "сортировщик", который находится в "разделах" основной таблицы, недоступен каждый раз, когда 0. Я использую Mysql:
SELECT sections.sorder as sorder section_titel as t1, вам не хватает запятой после сортировщика
О, я потерял комм при редактировании этого текста. Но это в моем коде, и в нем есть синтаксическая ошибка. Просто логика не работает. И я использую mySQL
Можете ли вы показать образцы данных, включая сортировщик?
вы можете показать пример sqlfiddler?
Не было бы лучше, если бы вы использовали GROUP BY с section_id вместо section_titel?
Есть ли в таблице sorder поле sub_sections? Невозможно воспроизвести эту проблему, и вы не предоставили дополнительные данные. Это лучше SELECT s.sorder as sorder , s.section_titel as t1, GROUP_CONCAT(sbs.sub_section_titel) as t2 FROM sections s LEFT JOIN sub_sections sbs ON s.section_id = sbs.sId GROUP BY s.section_id ORDER by s.sorder






Я создал SQLFiddle, который, надеюсь, представляет ваши данные. В этом примере ORDER BY sorder работает нормально. Я также включил ORDER BY в GROUP_CONCAT, чтобы можно было заказать названия подразделов. Итак, с исходным запросом:
SELECT section_titel as t1, GROUP_CONCAT(sub_section_titel) as t2
FROM sections LEFT JOIN sub_sections ON section_id = sId
GROUP BY t1
На выходе
t1 t2
Section One SubOne,SubTwo
Section Three SubThree
Section Two (null)
Но с новым запросом:
SELECT sorder, section_titel as t1, GROUP_CONCAT(sub_section_titel ORDER BY iorder) as t2
FROM sections LEFT JOIN sub_sections ON section_id = sId
GROUP BY t1
ORDER BY sorder
Результат:
sorder t1 t2
1 Section Three SubThree
2 Section One SubTwo,SubOne
3 Section Two (null)
Обратите внимание на переупорядочение Section Three и Section One, а также SubTwo и SubOne на основе значений sorder и iorder.
Это помогло? Если нет, можете ли вы предоставить дополнительную информацию (например, реальную структуру таблицы, поскольку я только что догадался), чтобы помочь решить проблему?
Какие СУБД вы используете? (Этот запрос относится к конкретному продукту.)