Я не уверен, что это возможно, и это, безусловно, сложно описать.MySQL - SubQuery внутри a Выберите
Я хотел бы вернуть SELECT
запрос таким образом:
pID | Name | Email | Dog Name | Fish Name ------------------------------------------------------- 44 | John | [email protected] | Scruffy | 56 | Jane | [email protected] | | Puffer 72 | Joe | [email protected] | Sparky | Gill
Есть 3 таблицы: tbl_option_fields
tbl_person
tbl_person_optionals
Первая таблица просто определяет неограниченное количество дополнительных полей. Вот столбцы:
optid | opttitle ------------------ 1 | Dog Name 2 | Fish Name 3 | Email
Вторая таблица является просто где я держу данные для людей:
pID | Name --------------- 44 | John 56 | Jane 72 | Joe
В последней таблице давайте мне хранить любую дополнительную информацию, которая существует для pID
ID | pID | optid | optval ---------------------------------- 1 | 44 | 1 | Scruffy 2 | 56 | 2 | Puffer 3 | 72 | 1 | Sparky 4 | 72 | 2 | Gill 5 | 72 | 3 | [email protected] 6 | 56 | 3 | [email protected] 7 | 44 | 3 | [email protected]
Результат оператора SELECT должен отображать opttitle
в заголовке результата. Я не разбираюсь в подзапросах, и это может быть doozy.
Вот моя попытка:
SELECT p.*, opt.optval
FROM `tbl_person` p
LEFT OUTER JOIN `tbl_person_optionals` opt ON p.pID = opt.pID
WHERE 1
Этот запрос вызывает дублирование результатов, и я полагаю, что я понимаю, почему.
pID | Name | optval ----------------------------- 44 | John | [email protected] 44 | John | Scruffy 56 | Jane | [email protected] 56 | Jane | Puffer 72 | Joe | [email protected] 72 | Joe | Sparky 72 | Joe | Gill
Надеюсь, я объясняю, что я хочу, чтобы отобразить Необязательные поля по горизонтали, а не новой записи в строках. Можно ли это сделать?
Что вы ищете, это сводный запрос, но mysql не поддерживает их напрямую. Есть обходные пути, но они делают для уродливого синтаксиса, и они не масштабируются автоматически, так как вы добавляете/хотите больше столбцов в сворачиваемом результате. –
И это, наверное, то, что мне нужно было услышать. благодаря! – coffeemonitor