+ Responder ao Tópico



  1. #1
    eduardounai
    Olá pessoal, estou com um problema aki. Eu tenho uma tabela "Secoes" que possui os campos: sec_id (int), sec_nome (varchar) e sec_categoria (int) e uma tabela "Categorias" que tem os campos: cat_id (int) e cat_nome (varchar). O que eu quero fazer é exibir todas as seções cadastradas agrupadas pela categoria, por exemplo:

    Categoria: CDS - Seções: Nacionais, Internacionais, Gospel ... etc
    Categoria: Livros - Seções: Direito, Informatica, Culinaria... etc

    Eu estou usando a clausula GROUP BY assim: SELECT S.sec_nome, C.cat_nome FROM secoes S, categorias C WHERE S.sec_categoria = C.cat_id GROUP BY C.cat_nome;

    O problema é que estao sendo retornados apenas a primeira secao de cada categoria assim:

    Categoria: CDS - Secoes: Nacionais
    Categoria: Livros - Secoes: Direito

    se eu uso o count(sec_nome), ele me retorna as quantidades de secoes em cada categoria corretamente, mas ele nao mostra os nomes de todas as sessoes; mostra apenas o nome da primeira secao de cada categoria. Minha sentença SQL tem algum erro? Como deve ficar pra conseguir o resultado desejado? Tem algum outro jeito sem ser usando GROUP BY?

    Estou usando mysql 4.1.11 no Fedora 4

    Grato

  2. Na verdade, se você não tem duplcidade de informação na tabela sessões, você não tem por que usar o group by.
    E imagino que a cláusula WHERE seja entre sec_categoria e cat_id e não sec_id e cat_id



  3. #3
    eduardounai
    Olá,

    mas tem duplicidade no campo secao.categoria; tem muitas secoes que pertencem a uma unica categoria, tipo:

    NOME da SECAO CATEGORIA
    nacionais cds
    internacionais cds
    gospel cds
    direito livros
    culinaria livros
    celulares eletronicos
    TV 29 " eletronicos

    ai eu queria fazer uma consulta pra mostrar todas as secoes agrupadas por categoria... e com a sentenca que citei no topico acima, so ta retornando a primeira secao de cada categoria assim:

    NOME da SECAO CATEGORIA
    nacionais cds
    direito livros
    celulares eletronicos

    nao aparece as secoes intenacionais, gospel, culinaria, nem TV 29 ... alguem sabe explicar pq?

    vlw

  4. Se você fizer da seguinte forma :
    Código :
    Select s.sec_nome, c.cat_nome
    From sessoes s join categorias c on s.sec_cat = c.cat_id
    Order by c.cat_nome, s.sec_nome
    Aqui você vai trazer todas as sessoes e suas respectivas categorias
    Se você colocar o GROUP BY você estará agrupando, restringindo as duplicidades de categoria e trazendo apenas uma sessão de cada......
    Se você está pensando em fazer um relatório onde não quer ficar repetindo o nome da categoria, então você deve controlar no relatório... :-)






Tópicos Similares

  1. Ordenar corretamente registros com GROUP BY
    Por Kandango no fórum Servidores de Rede
    Respostas: 2
    Último Post: 16-03-2011, 21:47
  2. Problemas com virtualhost ( Directory index forbidden by rule )
    Por activexbr no fórum Servidores de Rede
    Respostas: 3
    Último Post: 06-05-2007, 01:47
  3. PROBLEMA AO INSERIR USER NO GROUP
    Por andrelay no fórum Servidores de Rede
    Respostas: 0
    Último Post: 06-04-2006, 09:07
  4. PHP - novato com problemas !
    Por no fórum Servidores de Rede
    Respostas: 1
    Último Post: 03-06-2002, 20:30
  5. Problemas ao adicionar o samba ao dominio nt
    Por clmr no fórum Servidores de Rede
    Respostas: 0
    Último Post: 23-04-2002, 10:31

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L