Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jerfs

Filtro SQL

Recommended Posts

Galera essa é difícil de explicar mas vou tentar:

 

Tenho um bd de questões para provas, as questões podem ter 3 idiomas, ou seja, num registro existem campos para enunciado em inglês, português e espanhol. no banco criei tres campos (ingles, portugues, espanhol) boolean para atribuir true quando a questão estiver disponivel no idioma.

 

Como eu faço para saber qual é o número de questões que tenho no banco usando sql?! lembre-se que cada registro pode ou não ter mais de um idioma cadastrado.

 

Estou fazendo assim:

'select * from questoes where ingles = true or portugues = true or espanhol = true';

mas não funciona, porque quando o ponteiro para num registro que tem mais de um idioma, verifica e satisfaz a primeira opção já pula para o próximo registro!!! não sei o que fazer!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar de seu problema ser questão para ser discutida na área própria de bancos de dados, vou tentar ajudar... a primeira coisa que precisa deixar claro é como faz para contar o número de questões que tem no banco... se a questão está disponível em 3 idiomas, você conta ela como se fosse 3 questões ou uma só?

 

Seu problema não está claro... explica melhor e com exemplos.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplificando:

 

questoes ingles portugues espanhol

 

questão 1 true false false

questão 2 true true false

questão 3 true true true

questão 4 true false true

 

 

O certo seria me retornar 8 questões... mas na minha pesquisa está me retornando 4...

 

Obs... preciso criar uma query para exportar para relatório!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece porque você só tem 4 registros, mesmo pondo estas flags diferentes na sua tabela de questões... talvez fosse bom repensar sua estrutura ou montar uma procedure para gerar o resultado que quer usando tabelas temporárias, se o seu banco de dados suportar... mas ainda acho que o ideal seria rever a estrutura e por algo do tipo:

 

Tabela: TB_QUESTOES
Codigo INT Autoincremento
Questao VARCHAR(100)

TABELA: TB_IDIOMAS
CodIdioma INT
Descricao varchar(100)

Tabela: TB_QUESTOES_IDIOMAS
CODIGO_QUESTAO INT
CODIGO_IDIOMA INT

Com uma estrutura estilo a acima, você só precisaria fazer depois um select simples e poderia ligar a mesma questão pra N idiomas diferentes... se bem que se a questão é dada em idiomas diferentes, você tem que pensar em como gravar estes dados corretamente... mas, analisando superficialmente seu problema, esta estrutura que sugeri lhe traria quantas questões você tem com um select como o abaixo:

 

SELECT QUESTAO, IDIOMA
FROM TB_QUESTOES
INNER JOIN TB_QUESTOES_IDIOMAS ON (CODIGO = CODIGO_QUESTAO) 
INNER JOIN TB_IDIOMAS ON (CODIDIOMA = CODIGO_IDIOMA)

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro é a sua estrutura da tabela mesmo

 

o certo é normatizar o banco e criar um regristro para cada combinacao de idioma

 

ai teria o retorno que espero e facilitaria para muitas outras consultas tambem

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.