0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 17
|
|
1 | |
Как использовать один запрос вместо двух?19.08.2016, 13:53. Показов 500. Ответов 5
Метки нет (Все метки)
В CMS есть различные типы внутренних объектов.
У каждого объекта есть основные поля, общие для всех объектов (таблица objects). И дополнительные поля (таблица content). Столбцы таблицы objects есть поля объекта, тут все просто: objects(id, name,..., updated, created) Столбцы же таблицы content имеют фиксированные названия: content (oid, field, value), в столбце field хранится дополнительное поле, а в value -- его значение. Соответственно, при выборе по id из objects результатом запроса является строка, а при выборе из content -- таблица, где столбец oid повторяется: oid field value 3 mail [BLOB - 28 Байт] 3 fio [BLOB - 16 Байт] 3 date [BLOB - 10 Байт] 3 ip [BLOB - 13 Байт] Можно ли при выборе всех полей объекта использовать всего один запрос (а не выбирать сначала основные поля, а потом дополнительные)? Хочу в ответе получать строку, а не таблицу.
0
|
19.08.2016, 13:53 | |
Ответы с готовыми решениями:
5
Использовать один блок try{} вместо двух, сохраняя производительность Связанный список - использовать в функции один указатель вместо двух Jugged (ступенчатые) массивы: Вместо двух циклов for использовать один foreach Как использовать один Enum в двух проектах по связной ссылке? |
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
|
||||||
19.08.2016, 17:52 | 2 | |||||
Канеш можно, для этого SQL и придумали, почитайте на досуге про соединения таблиц aka JOIN-ы
0
|
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 17
|
||||||
19.08.2016, 20:24 [ТС] | 3 | |||||
С джойнами знаком, конструкция MAX....GROUP BY тоже вроде понятна.
А вот о добавлении произвольных полей в запрос я и не подозревал:
0
|
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
|
|
20.08.2016, 10:48 | 4 |
Если набор полей у вас заранее неопределён, то разворачивать в строку не имеет практического смысла.
Как вы потом собираетесь эту строку использовать? На клиенте ГОРАЗДО проще получить нормальный построчный дата сет из таблицы с полями для объекта и обработать его в цикле. Чем городить огород с неизвестного размера строкой, да плюс еще с неизвестными названиями колонок. Это теоретически можно сделать собрав динамический запрос в хранимке, но непонятен конечный бизнес кейс использования полученных данных.
0
|
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 17
|
|||||||||||
20.08.2016, 12:46 [ТС] | 5 | ||||||||||
У меня так и сделано:
0
|
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
|
|
22.08.2016, 12:48 | 6 |
Streuner, GROUP_CONCAT вам в помощь
0
|
22.08.2016, 12:48 | |
22.08.2016, 12:48 | |
Помогаю со студенческими работами здесь
6
Как можно использовать один и тот же скрипт VideoView на двух лайоутах? Один запрос к базе вместо 4 Вместо двух фреймов один Сделать вместо двух бордеров один Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |