Я пытаюсь создать единый запрос для сбора информации из нескольких таблиц. Вот основные для понимания моих потребностей:Выбор массивов, подзапросов и результатов нескольких строк
Информация, собранная из таблицы, проста. Один ряд за результат. Это основной результат, поэтому давайте просто сделаем переменные p.id, p.name и p.street. Вызовите реквизиты таблицы p.
Информация из второй таблицы, которую я буду называть событиями e, также будет простой. Будет одно событие для каждой опоры, и оно присоединяется к p.id = e.pid. Из этой таблицы нам нужно e.event_start.
Вот где он становится жестким. Третья таблица имеет два уровня множественных результатов: назовем ее функциями f. В нем четыре столбца: fid, pid, функция и desc. Мы присоединяем его к p.id = f.pid.
Что мне нужны результаты, которые выходят так:
[0] PID
[1] name
[2] street
[3] event_start
[4] features
[0] lighting
[0] red
[1] orange
[0] sound
[0] guitar
[1] drum
[2] keyboard
Теперь я искал в Интернете для решения, думая, что я мог бы сделать это с помощью подзапросов в избранных:
SELECT p.id, p.name, p.street, e.event_start, (SELECT f.feature)
с помощью объединений, конечно. От простого до сложного я не получил работу. Я посмотрел на GROUP_CONCAT, но это определенно не дает мне то, что мне нужно ... это делает одну строку и т. Д.
Есть ли способ сделать это в одном запросе? Если да, совет о том, как очень приветствуется.
Спасибо за ваше время.
Сортировка, но не совсем. Описанный вами метод даст нам несколько строк: отдельную строку для каждой комбинации функций/значений. Мне нужна одна строка с pid, вся другая информация из первых двух таблиц и каждая комбинация признаков/значений из таблицы функций. Одна строка на p.id – dglickler
Это строка или столбец? Чтобы значения из другого столбца отображались в том же столбце, вы можете использовать concat: CONCAT (f.feature, ',', f.desc) в предложении select. – user4704642
Я закончил использование GROUP_CONCAT с CONCAT_W, разделяющим запятые и точки с запятой, и это сработало. – dglickler