Активная Запись направляющих может обработать агрегатные запросы SQL?

Просто добавьте к разговору... C#/.NET, конечно, доступен на других платформах не-Microsoft.

Между теми двумя тут же, можно быть нацелены на Linux, Mac, Wii... Я уверен, было ли достаточно финансирования/интереса в нем, они могут стать Моно для работы ps3 также. В той точке Вы были бы в состоянии записать для всех крупнейших игровых платформ с помощью C# (хотя, вероятно, не с серовато-синим XNA).

кроме того, любому задающемуся вопросом о производительности... много больших вещей находится в работах, таких как новая поддержка Mono быстрых математических операций с плавающей точкой с помощью их расширений SIMD (x86 только на данный момент, конечно): http://tirania.org/blog/archive/2008/Nov-03.html

9
задан Sam Saffron 4 August 2009 в 04:22
поделиться

3 ответа

Как указал Паллан, параметр : select не может использоваться с параметром : include . Однако опция : joins может. И это то, что вам здесь нужно. Фактически, он может принимать те же аргументы, что и : включить или использовать ваш собственный SQL. Вот грубый, непроверенный код, который может потребовать незначительных изменений.

Event.all(:select => "events.id, patients.lname, events.patient_id, events.event_type, max(events.event_date) as max_date", :joins => :patient, :group => "patients.lname, events.patient_id, events.event_type")

Обратите внимание, что я немного изменил вещи. Я переименовал псевдоним event_date в max_date , чтобы не было путаницы по поводу того, какой атрибут вы имеете в виду. Атрибуты, используемые в вашем запросе : select , доступны в возвращенных моделях. Например, здесь вы можете вызвать event.max_date . Я также добавил столбец события id , потому что иногда вы можете получить неприятные ошибки без атрибута id (в зависимости от того, как вы используете возвращенные модели).

Основное различие между : include и : joins заключается в том, что первый выполняет активную загрузку связанных моделей. Другими словами, он автоматически выбирает связанный объект пациента для каждого события. Для этого требуется управление оператором select , потому что ему необходимо одновременно выбрать атрибуты пациента. С : объединяет объекты пациента не создаются.

он автоматически выбирает связанный объект пациента для каждого события. Для этого требуется управление оператором select , потому что ему необходимо одновременно выбрать атрибуты пациента. С : объединяет объекты пациента не создаются.

он автоматически выбирает связанный объект пациента для каждого события. Для этого требуется управление оператором select , потому что ему необходимо одновременно выбрать атрибуты пациента. С : объединяет объекты пациента не создаются.

14
ответ дан 4 December 2019 в 13:04
поделиться

В текущей версии AR (2.3) Я думаю, ваш единственный вариант - использовать find_by_sql. Почему? Ваши собственные атрибуты SELECT. ActiveRecord позволяет: выбирать и: включать аргументы в вызов поиска. К сожалению, их нельзя использовать вместе. Если вы укажете оба варианта: select будет проигнорирован. В вашем примере вам нужно выбрать, чтобы ограничить количество столбцов и получить функцию MAX.

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

Peer

0
ответ дан 4 December 2019 в 13:04
поделиться

Включить - это просто умное левое соединение, вы можете использовать его вместе с select и group_by в вашем .find

2
ответ дан 4 December 2019 в 13:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: