[Cascavel-pm] agrupamento e seleção em DBI

Rodrigo Fernandes fernandesrp em yahoo.com
Quarta Fevereiro 6 12:24:12 PST 2008


----- Original Message ----
From: Luis Motta Campos <luismottacampos em yahoo.co.uk>
To: Cascavel Perl Mongers <cascavel-pm em pm.org>
Sent: Wednesday, February 6, 2008 5:27:20 PM
Subject: Re: [Cascavel-pm] agrupamento e seleção em DBI

...

>Teu código é grande demais e não tem nada a ver com o problema que você 
>está tentando resolver.

Se tu achas, por mim tudo bem.

>1. Manda a definição das tabelas que você está usando;

Trata-se de uma única tabela. Se eu criar outras, poderia resolver o problema, mas me parece que isto seria uma solução pouco econômica. Então, estou tentando obter este SELECT diretamente da minha tabela inicial. 

Acho que a melhor definição da tabela é:

SELECT *
FROM user
ORDER BY id_d, tficf_t, t

1, -1.96995, 'a'
1, -1.84598, 'e'
1, -1.75295, 'que'
...
30, 0.176634, 'Minerva'

>2. Reduz o teu problema *consistentemente* para a menor quantidade de 
>código possível;

Tenho isso: 

        SELECT t, tficf_t, id_d
        FROM user
        WHERE t IN (
            SELECT t
            FROM user            
            GROUP BY t
            HAVING COUNT(*) > 1            
        )         
        ORDER BY t, tficf_t desc

Que me dá uma linha se e somente se o t desta linha ocorre em pelo menos outra linha. Muito bem. Agora gostaria, também, de restringir o SELECT quanto aos valores id_d. Ou seja, gostaria de todo o resultado anteior apenas WHERE id_d IN (1,30) ou, dito de outra forma, WHERE (id_d = 1 OR id_d = 30). Na verdade, estou meio perdido. 
Quando tentei 

WHERE (id_d = 1 OR id_d = 30) AND t IN (
...

O Perl me deu o resultado da primeira cláusula AND o resultado da segunda, ou seja (A) AND (B). Mas eu queria algo como um INTERSECT entre a primeira e a segunda, ou seja, ((A) AND (B)). Bem, é isso.

> 3. Se você tem problemas com SQL, eu não quero ver o teu Perl.

Muito bem, a pudicícia agradece. :-)

>Se você ainda estiver brigando com o problema, eu estou disposto a 
>ajudar. Mas preciso de mais informação.

Acredito que agora a informação seja necessária e suficiente. Se não for, é só pedir que manobro novamente o cavalo. 

Obrigado,

Rodrigo Fernandes


      ____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs



Mais detalhes sobre a lista de discussão Cascavel-pm