Оператор PHP SQL LEFT JOIN потерял один столбец

Я использую запрос, предложенный в этом посте 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:

Какие СУБД вы используете? (Этот запрос относится к конкретному продукту.)

jarlh 13.08.2018 09:58
SELECT sections.sorder as sorder section_titel as t1, вам не хватает запятой после сортировщика
Tschallacka 13.08.2018 09:58

О, я потерял комм при редактировании этого текста. Но это в моем коде, и в нем есть синтаксическая ошибка. Просто логика не работает. И я использую mySQL

J. Doe 13.08.2018 10:07

Можете ли вы показать образцы данных, включая сортировщик?

Nick 13.08.2018 10:08

вы можете показать пример sqlfiddler?

Yossi Vainshtein 13.08.2018 10:10

Не было бы лучше, если бы вы использовали GROUP BY с section_id вместо section_titel?

user2560539 13.08.2018 10:18

Есть ли в таблице 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

user2560539 13.08.2018 10:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
7
79
1

Ответы 1

Я создал 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.

Это помогло? Если нет, можете ли вы предоставить дополнительную информацию (например, реальную структуру таблицы, поскольку я только что догадался), чтобы помочь решить проблему?

Nick 16.08.2018 02:31

Другие вопросы по теме