Jerfs 1 Denunciar post Postado Março 31, 2009 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
Chrnos 30 Denunciar post Postado Março 31, 2009 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
Jerfs 1 Denunciar post Postado Março 31, 2009 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
Chrnos 30 Denunciar post Postado Março 31, 2009 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
Mário Monteiro 179 Denunciar post Postado Março 31, 2009 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