[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Класс работы с БД
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
dr.nomore
Цитата (Valick @ 23.11.2013 - 18:23)
Для меня важна гибкость SQL запросов, а любая обертка враг той самой гибкости.

Все равно одним запросом не обойтись когда заранее неизвестно сколько там прилетит.

На десктопе, конечно, по барабану. Но веб, глюкавая сучность, дохнет от переизбытка данных.

Я только на вебе узнал что такое LIMIT 0, 20.

Вспомнил. Был у меня поиск, который заполнял результатами то же самое поле ввода, которое обычный ниспадающий список. Там кажется 65К можно залить, штук, но я подумал что будет многовато и 1000 и просто проверял рекордсет - если больше 1000 то советовал юзеру (то есть самому себе) не вводить слишком общие условия поиска. Про существование LIMITы не догадывался. А нахрена. Памяти дохрена, все свое, какой-токой лимит...
dr.nomore
Aeq

Кстати, ваш класс и вообще такого рода классы типа там активных рекордов распознают сущности не из бд? Например count(*) as total и прочие агрегаты concat(name, "+", second_name) as full_name`, или если я поменяю тип поля в запросе, скажем с текста на число: my_text +0 as my_text... они как поймут?
dr.nomore
select 2*2 as base_question ?
Aeq
dr.nomore
поймет нормально
$result = $apdo->statement('select 2*2 as base_question')->fetchOne();
echo $result->base_question;
list($base_question) = $apdo->statement('select 2*2 as base_question')->fetchRow();
echo $base_question;
$base_question = $apdo->statement('select 2*2 as base_question')->fetchCell('base_question');
echo $base_question;
dr.nomore
Ни понял. Целиком и зайца можно научить писать запросы. Вы покажите генерацию. И активную часть. Я сделал запрос, активный рекорд в курсе, я прошу его записать в поле base_question скажем 5. Что произойдет?
Aeq
для запроса select 2*2 as base_question генерации сейчас не предусмотрено, т.к. обязательно указание таблицы. но впринципе можно сделать это необязательным, тогда получится например так:
$result = $apdo->statement()->fields('2*2 as base_question')->fetchOne();
echo $result->base_question;

или
list($base_question) = $apdo->statement()->fields('2*2')->fetchRow();
echo $base_question;
dr.nomore
Про сложные запросы и тряхомудию в моделях:

$q = 'select 
`catalog_group`.`subject` AS `Категория`,
CONCAT( "'
. $imgsrc . '",
`catalog_photo`.`id_photo`, "___",
`catalog_photo`.`photo`,
"\"/>") AS `Фото`,
`catalog`.`subject` AS `Наименование`,
`catalog`.`available` AS `Наличие`,
CONCAT("<a target=\"_blank\" href=\"http://www.somesite.ru/catalog/",
cast(`catalog`.`group` AS CHAR CHARACTER SET utf8), "/",
cast(`catalog`.`iden` AS CHAR CHARACTER SET utf8), ".html", "\">",
`catalog_sub`.`name`, "</a>" ) AS `Продукт`,
`catalog_sub`.`price` AS `Цена`,
`catalog_sub`.`size` AS `Размеры`
from `catalog_group`, `catalog`, `catalog_sub`, `catalog_photo`
where
`catalog`.`group` = `catalog_group`.`iden`
and
`catalog_sub`.`parent` = `catalog`.`iden`
and
`catalog_photo`.`iiden` = `catalog`.`iden`
and `catalog`.`group` in (4,5)
group by `catalog_sub`.`name`
order by `catalog`.`group` desc, `catalog_sub`.`name` asc '
;


Затем идет 5 строк на развертку таблицы и перед ними 5 строк на объяснение что тут к чему. В таблице картинки-ссылки на главный сайт.

Да, еще и в синтаксисе оракл как видите, сделан join.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.