RES: Consulta complexa

RES: Consulta complexa

am 20.10.2005 15:30:09 von fabiomeira

------=_NextPart_000_004B_01C5D569.A4E32880
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Concordo com o Daniel. Gere as tabelas no esquema:

=20

equipamento =3D codigo | descricao

componente =3D codigo | descricao

eq_cp =3D equipamento | componente

=20

=20

Talvez uma solução poss=EDvel seja:

=20

select descricao

from equipamento e

where=20

exists

(select *

from componente c, eq_cp ec

where e.codigo =3D ec.equipamento and

ec.componente in (cod1, cod2, cod3, ..., codn)) --> =
componentes
desejados

and

not exists

(select *

from componente c, eq_cp ec

where e.codigo =3D ec.equipamento and

ec.componente in (cod1, cod2, cod3, ..., codn)); --> =
componentes
n=E3o desejados

=20

=20

Por=E9m eu n=E3o testei.

[]s

=20

=20

-----Mensagem original-----
De: Franco Catena [mailto:facatena@surson.com.br]=20
Enviada em: quinta-feira, 20 de outubro de 2005 07:27
Para: win32@lists.mysql.com
Assunto: Consulta complexa

=20

=20

Bom dia,

=20

estou num dilema, tenho que fazer um cadastro que poderia gerar algo:

=20

tabela 1 1 ---------->N tabela 2=20

=20

A tabela um s=E3o os dados gerais de um equipamento e a tabela dois sao =
as

coisas que este esquipamento pode ou nao ter. Bom occorre que para cada

equipaemnto eu posso ter at=E9 700 itens na tabela 2.

ex:

=20

equipamento A tem dos 700 possiveis 400 itens e termos 3.000 =
equipementos

cadastrados

=20

eu pensei em fazer um unico registro e desprezar a normalizacao com 750

campos( 50 agrupando os dados gerais do equipamento e mais 700 registor =
sdo

tipo boleano) Contudo isso ficaria um registro enorme.=20

=20

Pergunta:

=20

Eu preciso fazer a seguinte consulta:

=20

se fosse normalizado

=20

qual o numero do equipamento ( tabela 1 ) que tem o item 1 , 2 , 3, 134 =
mas

que nao tenha o Item 24, 38

=20

Eu havia pensado em s=F3 gravar os itens que existissem no equipamento =
para

economizar espaco. Sera que =E9 possivel? como fazer esse select?

=20

Alguem pode me ajudar?

=20

Franco Catena

=20

=20

=20

--=20

No virus found in this outgoing message.

Checked by AVG Anti-Virus.

Version: 7.0.344 / Virus Database: 267.12.4/143 - Release Date: =
19/10/2005

=20

=20

--=20

MySQL Windows Mailing List

For list archives: http://lists.mysql.com/win32

To unsubscribe:
http://lists.mysql.com/win32?unsub=3Dfabiomeira@saocamilo-es .br


------=_NextPart_000_004B_01C5D569.A4E32880--

RES: Consulta complexa

am 20.10.2005 15:49:56 von fabiomeira

Camarada. Testei a solução proposta e realmente ela =E9 funcional. =
Se voc=EA for
realizar muitas consultas, indexe todos os campos que s=E3o utilizados =
no
processo de junção - chaves prim=E1ria e estrangeira (na vers=E3o =
INNODB isto j=E1
=E9 obrigat=F3rio). Esta indexação acelera a consulta, por=E9m =
atrasa a
manipulação (inserção, alteração e exclus=E3o).
[]s

-----Mensagem original-----
De: F=E1bio L=FAcio Meira [mailto:fabiomeira@saocamilo-es.br]=20
Enviada em: quinta-feira, 20 de outubro de 2005 11:30
Para: win32@lists.mysql.com
Assunto: RES: Consulta complexa

Concordo com o Daniel. Gere as tabelas no esquema:

=20

equipamento =3D codigo | descricao

componente =3D codigo | descricao

eq_cp =3D equipamento | componente

=20

=20

Talvez uma solução poss=EDvel seja:

=20

select descricao

from equipamento e

where=20

exists

(select *

from componente c, eq_cp ec

where e.codigo =3D ec.equipamento and

ec.componente in (cod1, cod2, cod3, ..., codn)) --> =
componentes
desejados

and

not exists

(select *

from componente c, eq_cp ec

where e.codigo =3D ec.equipamento and

ec.componente in (cod1, cod2, cod3, ..., codn)); --> =
componentes
n=E3o desejados

=20

=20

Por=E9m eu n=E3o testei.

[]s

=20

=20

-----Mensagem original-----
De: Franco Catena [mailto:facatena@surson.com.br]=20
Enviada em: quinta-feira, 20 de outubro de 2005 07:27
Para: win32@lists.mysql.com
Assunto: Consulta complexa

=20

=20

Bom dia,

=20

estou num dilema, tenho que fazer um cadastro que poderia gerar algo:

=20

tabela 1 1 ---------->N tabela 2=20

=20

A tabela um s=E3o os dados gerais de um equipamento e a tabela dois sao =
as

coisas que este esquipamento pode ou nao ter. Bom occorre que para cada

equipaemnto eu posso ter at=E9 700 itens na tabela 2.

ex:

=20

equipamento A tem dos 700 possiveis 400 itens e termos 3.000 =
equipementos

cadastrados

=20

eu pensei em fazer um unico registro e desprezar a normalizacao com 750

campos( 50 agrupando os dados gerais do equipamento e mais 700 registor =
sdo

tipo boleano) Contudo isso ficaria um registro enorme.=20

=20

Pergunta:

=20

Eu preciso fazer a seguinte consulta:

=20

se fosse normalizado

=20

qual o numero do equipamento ( tabela 1 ) que tem o item 1 , 2 , 3, 134 =
mas

que nao tenha o Item 24, 38

=20

Eu havia pensado em s=F3 gravar os itens que existissem no equipamento =
para

economizar espaco. Sera que =E9 possivel? como fazer esse select?

=20

Alguem pode me ajudar?

=20

Franco Catena

=20

=20

=20

--=20

No virus found in this outgoing message.

Checked by AVG Anti-Virus.

Version: 7.0.344 / Virus Database: 267.12.4/143 - Release Date: =
19/10/2005

=20

=20

--=20

MySQL Windows Mailing List

For list archives: http://lists.mysql.com/win32

To unsubscribe:
http://lists.mysql.com/win32?unsub=3Dfabiomeira@saocamilo-es .br



--
MySQL Windows Mailing List
For list archives: http://lists.mysql.com/win32
To unsubscribe: http://lists.mysql.com/win32?unsub=3Dgcdmw-win32@m.gmane.org