Eu usei o próprio DB::select para montar a query, tipo:

$sql = DB::select('article', array(DB::expr('MAX(price)',
'price'))->from('shop')->group_by('article');

ORM::factory('shop')->join(array($sql, 's2'))->ON('shop.article', '=',
's2.article')->where('shop.price', '=', 's2.price');

e funcionou.

Não usei uma chave no ON por que não consigo construir uma query que me dê
a chave correta, se alguém tiver uma sugestão eu agradeceria enormemente.

Atenciosamete,
Douglas Santos.


Em 28 de novembro de 2012 20:08, felipe bastos <[email protected]>escreveu:

> Flw,
>
> Mas ON é usado para chaves .. este exemplo so esta correto semanticamente
> se price for uma chave indexada .. nao sendo, prefira usar where.
> Em 28/11/2012 16:39, "Douglas Fonseca dos Santos" <
> [email protected]> escreveu:
>
> Quanto à primeira questão, eu não tenho nenhum problema em usar o
>> DB::select pra fazer a subquery, só queria saber se existe algum jeito de
>> fazer a mesma coisa com o ORM, não faz muito tempo que eu uso o Kohana e
>> não sei se existe forma melhor de fazer o que eu faço, mas com o DB::select
>> funciona de boa.
>>
>> Quanto a segunda questão, eu precisava fazer uma query como a desse link
>>
>>
>> http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-row.html
>>
>> Mais especificamente algo bem parecido com essa query:
>>
>> SELECT s1.article, dealer, s1.price
>> FROM shop s1
>> JOIN (
>>   SELECT article, MAX(price) AS price
>>   FROM shop
>>   GROUP BY article) AS s2
>>   ON s1.article = s2.article AND s1.price = s2.price;
>>
>>
>> Eu nem pensei em usar a clausa WHERE, mas acho que com WHERE funciona do
>> mesmo jeito.
>>
>> Muito obrigado pela atenção,
>>
>> Atenciosamente,
>> Douglas Santos.
>>
>>
>>
>> Em 28 de novembro de 2012 19:14, felipe bastos <[email protected]>escreveu:
>>
>>> Douglas, uma correcao ..
>>>
>>> Join ...... On .......
>>>
>>> Where ....... and .......
>>>
>>> No mais .. veja se é possivel ... orm::factory().select(tb1.*,
>>> tb2.*).from().join().where().find_all() .. nao lembro se é possivel.
>>>
>>> Mas, encare o ORM como um mapeamento. Se seu mapeamento tras o resultado
>>> de 2 tabelas, ja pensou em criar uma view no banco e usar o orm so pra
>>> consultas?
>>>
>>> E, nao veja usar DB como um problema. Ele serve para isso .. o orm é
>>> apenas uma camada superior a DB
>>>  Em 28/11/2012 15:54, "Douglas Fonseca dos Santos" <
>>> [email protected]> escreveu:
>>>
>>>  Bom dia a todos,
>>>>
>>>> Estou encontrando um problema para fazer umas query's no Kohana 3.2.
>>>>
>>>> Primeiro, eu preciso fazer uma subquery, gostaria de saber se existe
>>>> uma forma usando apenas o ORM (sem utilizar o DB::select).
>>>>
>>>> Segundo, existe alguma forma de se fazer um AND no ON de um JOIN (tipo
>>>> SELECT * FROM table1 INNER JOIN table2 ON table1.campo1 = table2.campo1
>>>> *AND* table1.campo2 = table2.campo2).
>>>>
>>>> Agradeço a atenção,
>>>>
>>>> Atenciosamente,
>>>> Douglas Santos.
>>>>
>>>> --
>>>> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
>>>> Php" dos Grupos do Google.
>>>> Para ver esta discussão na web, acesse
>>>> https://groups.google.com/d/msg/kohana-php/-/RwKyW2lBJ4YJ.
>>>> Para postar neste grupo, envie um e-mail para
>>>> [email protected].
>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para
>>>> [email protected].
>>>> Para obter mais opções, visite esse grupo em
>>>> http://groups.google.com/group/kohana-php?hl=pt-BR.
>>>>
>>>  --
>>> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
>>> Php" dos Grupos do Google.
>>> Para postar neste grupo, envie um e-mail para
>>> [email protected].
>>> Para cancelar a inscrição nesse grupo, envie um e-mail para
>>> [email protected].
>>> Para obter mais opções, visite esse grupo em
>>> http://groups.google.com/group/kohana-php?hl=pt-BR.
>>>
>>
>>  --
>> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
>> Php" dos Grupos do Google.
>> Para postar neste grupo, envie um e-mail para [email protected]
>> .
>> Para cancelar a inscrição nesse grupo, envie um e-mail para
>> [email protected].
>> Para obter mais opções, visite esse grupo em
>> http://groups.google.com/group/kohana-php?hl=pt-BR.
>>
>  --
> Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana
> Php" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para [email protected].
> Para cancelar a inscrição nesse grupo, envie um e-mail para
> [email protected].
> Para obter mais opções, visite esse grupo em
> http://groups.google.com/group/kohana-php?hl=pt-BR.
>

-- 
Você está recebendo esta mensagem porque se inscreveu no grupo "Kohana Php" dos 
Grupos do Google.
Para postar neste grupo, envie um e-mail para [email protected].
Para cancelar a inscrição nesse grupo, envie um e-mail para 
[email protected].
Para obter mais opções, visite esse grupo em 
http://groups.google.com/group/kohana-php?hl=pt-BR.

Responder a