dilema do meu mês em filtros

Delphi

30/05/2006

olha só galera, eu estou a mais de 1 mês neste problema:
veja esta consulta sql que uso em banco interbase:

select distinct DISCIPLINA from NOTAS A where ANO_LETIVO = ´2006´ and SERIE = ´6ª SÉRIE´ and TURMA = ´A´ and TURNO = ´TARDE´ and exists ( select distinct * from BOLETIM where COD_BOLE = A.COD_BOLE and MATRICULA = A.MATRICULA and ANO_LETIVO = ´2006´ and SERIE = ´6ª SÉRIE´ and TURMA = ´A´ and TURNO = ´TARDE´) and DISCIPLINA <> ´MATEMÁTICA - ALGEBRA´ and DISCIPLINA <> ´MATEMÁTICA GEOMETRIA´ and DISCIPLINA <> ´PORTUGUÊS - GRAMÁTICA´ and DISCIPLINA <> ´PORTUGUÊS - TEXTO - REDAÇÃO´ order by DISCIPLINA

Resultado:
DISCIPLINA ============================== CIÊNCIAS EDUCAÇÃO ARTÍSTICA EDUCAÇÃO FÍSICA EDUCAÇÃO RELIGIOSA GEOGRAFIA HISTÓRIA INFORMÁTICA INGLÊS LITERATURA ÉTICA


como poderei fazer para que estes resultados que vem de outra tabela possa cair dentro deta minha consulta? independente da quantidade de registros desta outra tabela?
DISCIPLINA <> ´MATEMÁTICA - ALGEBRA´ and
DISCIPLINA <> ´MATEMÁTICA GEOMETRIA´ and
DISCIPLINA <> ´PORTUGUÊS - GRAMÁTICA´ and
DISCIPLINA <> ´PORTUGUÊS - TEXTO - REDAÇÃO´

explicando melho: ´MATEMÁTICA - ALGEBRA´ , ´MATEMÁTICA GEOMETRIA´ , ´PORTUGUÊS - GRAMÁTICA´ , ´PORTUGUÊS - TEXTO - REDAÇÃO´ é um resultado que fica em outra tabela como fazer para que estas strings caiam dentro da minha consulta acima?

Obrigado
Ramos


Erivando

Erivando

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

30/05/2006

Colega,

Se eu tiver entendido, basta unir as consultas com [b:1a0b5e9e00]union all[/b:1a0b5e9e00]. Senão, coloque a estrutura das tabelas e mais detalhes sobre o problema.


GOSTEI 0
Erivando

Erivando

30/05/2006

[quote:6c79860798=´Aroldo Zanela´]Colega,

Se eu tiver entendido, basta unir as consultas com [b:6c79860798]union all[/b:6c79860798]. Senão, coloque a estrutura das tabelas e mais detalhes sobre o problema.[/quote:6c79860798]

No sistema aqui tem estas duas tabelas; tab. MATERIAS e tab. NOTAS de onde através destas duas gostaria de uma consulta que mim traga o seguinte resulatado:

DISCIPLINA
==============================
CIÊNCIAS
EDUCAÇÃO ARTÍSTICA
EDUCAÇÃO FÍSICA
EDUCAÇÃO RELIGIOSA
GEOGRAFIA
HISTÓRIA
INFORMÁTICA
INGLÊS
LITERATURA
ÉTICA

e não este:
DISCIPLINA
==============================
CIÊNCIAS
EDUCAÇÃO ARTÍSTICA
EDUCAÇÃO FÍSICA
EDUCAÇÃO RELIGIOSA
GEOGRAFIA
HISTÓRIA
INFORMÁTICA
INGLÊS
LITERATURA
MATEMÁTICA - ALGEBRA
MATEMÁTICA GEOMETRIA
PORTUGUÊS - GRAMÁTICA
PORTUGUÊS - TEXTO - REDAÇÃO
ÉTICA

como tar vindo pra mim agora, quero que a consulta não mim retorne estas disciplinas:
MATEMÁTICA - ALGEBRA
MATEMÁTICA GEOMETRIA
PORTUGUÊS - GRAMÁTICA
PORTUGUÊS - TEXTO - REDAÇÃO

tabelas usadas:

/* Domain definitions */ CREATE DOMAIN ´CODIGO´ AS INTEGER NOT NULL; CREATE DOMAIN ´DISCIPLINA´ AS VARCHAR(30); /* Table: MATERIAS, Owner: INFORAMOS */ CREATE TABLE ´MATERIAS´ ( ´COD_MATE´´CODIGO´, ´DISCIPLINA´´DISCIPLINA´, ´LDB´VARCHAR(2), ´DISTRIBUIDA´VARCHAR(3), ´UNIFICACAO´VARCHAR(45), PRIMARY KEY (´COD_MATE´) );


/* Domain definitions */ CREATE DOMAIN ´ANO´ AS VARCHAR(4); CREATE DOMAIN ´CODIGO´ AS INTEGER NOT NULL; CREATE DOMAIN ´DISCIPLINA´ AS VARCHAR(30); CREATE DOMAIN ´MATRICULA´ AS VARCHAR(17); CREATE DOMAIN ´NOTA´ AS VARCHAR(5); CREATE DOMAIN ´SERIE´ AS VARCHAR(30); CREATE DOMAIN ´TURMA´ AS VARCHAR(10); CREATE DOMAIN ´TURNO´ AS VARCHAR(5); /* Table: NOTAS, Owner: INFORAMOS */ CREATE TABLE ´NOTAS´ ( ´COD_NOTA´´CODIGO´, ´COD_BOLE´´CODIGO´, ´MATRICULA´´MATRICULA´, ´ANO_LETIVO´´ANO´, ´DISCIPLINA´´DISCIPLINA´, ´ETAPA_1_MAR´´NOTA´, ´ETAPA_1_ABR´´NOTA´, ´ETAPA_1_M´´NOTA´, ´ETAPA_1_R´´NOTA´, ´ETAPA_2_MAI´´NOTA´, ´ETAPA_2_JUN´´NOTA´, ´ETAPA_2_M´´NOTA´, ´ETAPA_2_R´´NOTA´, ´ETAPA_3_AGO´´NOTA´, ´ETAPA_3_SET´´NOTA´, ´ETAPA_3_M´´NOTA´, ´ETAPA_3_R´´NOTA´, ´ETAPA_4_OUT´´NOTA´, ´ETAPA_4_NOV´´NOTA´, ´ETAPA_4_M´´NOTA´, ´ETAPA_4_R´´NOTA´, ´PROVAO´´NOTA´, ´PROVAO_R´´NOTA´, ´MEDIA_FINAL´´NOTA´, ´FALTAS´INTEGER, ´PONTOS´VARCHAR(4), ´RESULTADO_FINAL´VARCHAR(11), ´SERIE´´SERIE´, ´TURMA´´TURMA´, ´TURNO´´TURNO´, ´DISTRIBUIDA´VARCHAR(3), PRIMARY KEY (´COD_NOTA´) );



Esta consulta abaixo traz os resultado que desejo mas não sei como fazer isto usando o resulatdo de uma outra consulta.
select distinct DISCIPLINA from NOTAS A where ANO_LETIVO = ´2006´ and SERIE = ´6ª SÉRIE´ and TURMA = ´A´ and TURNO = ´TARDE´ and exists ( select distinct * from BOLETIM where COD_BOLE = A.COD_BOLE and MATRICULA = A.MATRICULA and ANO_LETIVO = ´2006´ and SERIE = ´6ª SÉRIE´ and TURMA = ´A´ and TURNO = ´TARDE´) and DISCIPLINA <> ´MATEMÁTICA - ALGEBRA´ and DISCIPLINA <> ´MATEMÁTICA GEOMETRIA´ and DISCIPLINA <> ´PORTUGUÊS - GRAMÁTICA´ and DISCIPLINA <> ´PORTUGUÊS - TEXTO - REDAÇÃO´ order by DISCIPLINA



GOSTEI 0
Erivando

Erivando

30/05/2006

será que alguem pode entender o que eu quero?

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[quote:d7360006b8=´Aroldo Zanela´]Colega, Se eu tiver entendido, basta unir as consultas com [b:d7360006b8]union all[/b:d7360006b8]. Senão, coloque a estrutura das tabelas e mais detalhes sobre o problema.


No sistema aqui tem estas duas tabelas; tab. MATERIAS e tab. NOTAS de onde através destas duas gostaria de uma consulta que mim traga o seguinte resulatado:

DISCIPLINA
==============================
CIÊNCIAS
EDUCAÇÃO ARTÍSTICA
EDUCAÇÃO FÍSICA
EDUCAÇÃO RELIGIOSA
GEOGRAFIA
HISTÓRIA
INFORMÁTICA
INGLÊS
LITERATURA
ÉTICA

e não este:
DISCIPLINA
==============================
CIÊNCIAS
EDUCAÇÃO ARTÍSTICA
EDUCAÇÃO FÍSICA
EDUCAÇÃO RELIGIOSA
GEOGRAFIA
HISTÓRIA
INFORMÁTICA
INGLÊS
LITERATURA
MATEMÁTICA - ALGEBRA
MATEMÁTICA GEOMETRIA
PORTUGUÊS - GRAMÁTICA
PORTUGUÊS - TEXTO - REDAÇÃO
ÉTICA

como tar vindo pra mim agora, quero que a consulta não mim retorne estas disciplinas:
MATEMÁTICA - ALGEBRA
MATEMÁTICA GEOMETRIA
PORTUGUÊS - GRAMÁTICA
PORTUGUÊS - TEXTO - REDAÇÃO

tabelas usadas:

/* Domain definitions */ CREATE DOMAIN ´CODIGO´ AS INTEGER NOT NULL; CREATE DOMAIN ´DISCIPLINA´ AS VARCHAR(30); /* Table: MATERIAS, Owner: INFORAMOS */ CREATE TABLE ´MATERIAS´ ( ´COD_MATE´´CODIGO´, ´DISCIPLINA´´DISCIPLINA´, ´LDB´VARCHAR(2), ´DISTRIBUIDA´VARCHAR(3), ´UNIFICACAO´VARCHAR(45), PRIMARY KEY (´COD_MATE´) );


/* Domain definitions */ CREATE DOMAIN ´ANO´ AS VARCHAR(4); CREATE DOMAIN ´CODIGO´ AS INTEGER NOT NULL; CREATE DOMAIN ´DISCIPLINA´ AS VARCHAR(30); CREATE DOMAIN ´MATRICULA´ AS VARCHAR(17); CREATE DOMAIN ´NOTA´ AS VARCHAR(5); CREATE DOMAIN ´SERIE´ AS VARCHAR(30); CREATE DOMAIN ´TURMA´ AS VARCHAR(10); CREATE DOMAIN ´TURNO´ AS VARCHAR(5); /* Table: NOTAS, Owner: INFORAMOS */ CREATE TABLE ´NOTAS´ ( ´COD_NOTA´´CODIGO´, ´COD_BOLE´´CODIGO´, ´MATRICULA´´MATRICULA´, ´ANO_LETIVO´´ANO´, ´DISCIPLINA´´DISCIPLINA´, ´ETAPA_1_MAR´´NOTA´, ´ETAPA_1_ABR´´NOTA´, ´ETAPA_1_M´´NOTA´, ´ETAPA_1_R´´NOTA´, ´ETAPA_2_MAI´´NOTA´, ´ETAPA_2_JUN´´NOTA´, ´ETAPA_2_M´´NOTA´, ´ETAPA_2_R´´NOTA´, ´ETAPA_3_AGO´´NOTA´, ´ETAPA_3_SET´´NOTA´, ´ETAPA_3_M´´NOTA´, ´ETAPA_3_R´´NOTA´, ´ETAPA_4_OUT´´NOTA´, ´ETAPA_4_NOV´´NOTA´, ´ETAPA_4_M´´NOTA´, ´ETAPA_4_R´´NOTA´, ´PROVAO´´NOTA´, ´PROVAO_R´´NOTA´, ´MEDIA_FINAL´´NOTA´, ´FALTAS´INTEGER, ´PONTOS´VARCHAR(4), ´RESULTADO_FINAL´VARCHAR(11), ´SERIE´´SERIE´, ´TURMA´´TURMA´, ´TURNO´´TURNO´, ´DISTRIBUIDA´VARCHAR(3), PRIMARY KEY (´COD_NOTA´) );



Esta consulta abaixo traz os resultado que desejo mas não sei como fazer isto usando o resulatdo de uma outra consulta.
select distinct DISCIPLINA from NOTAS A where ANO_LETIVO = ´2006´ and SERIE = ´6ª SÉRIE´ and TURMA = ´A´ and TURNO = ´TARDE´ and exists ( select distinct * from BOLETIM where COD_BOLE = A.COD_BOLE and MATRICULA = A.MATRICULA and ANO_LETIVO = ´2006´ and SERIE = ´6ª SÉRIE´ and TURMA = ´A´ and TURNO = ´TARDE´) and DISCIPLINA <> ´MATEMÁTICA - ALGEBRA´ and DISCIPLINA <> ´MATEMÁTICA GEOMETRIA´ and DISCIPLINA <> ´PORTUGUÊS - GRAMÁTICA´ and DISCIPLINA <> ´PORTUGUÊS - TEXTO - REDAÇÃO´ order by DISCIPLINA
[/quote:d7360006b8]



GOSTEI 0
Motta

Motta

30/05/2006

Sugestão :

Publique a descrição das tabelas e a pergunta que se quer responder
na forma descritiva :

Ex:
1) Listar todas a materias que tiveram nº de alunos acima da média.
2) Listar todas as materias das turmas da 6ª serie.

----------------------------------------------------------------------------


GOSTEI 0
Rjun

Rjun

30/05/2006

Acho que sua estrutura de tabela está meio confusa. Você está fazendo busca por nomes. Isso tem tudo pra dar errado. Crie tabelas de disciplinas e materias.


GOSTEI 0
POSTAR