Mostrar número de anúncios por categorias em tabela PHP MySQL

  • Autor Autor Andresoso
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Andresoso

Andresoso

Curioso
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Hola a todos, siempre he hecho cosas muy basicas con php y mysql, pero esta es una duda que no se como resolverla, es algo muy basico que me ha tenido pensando.

Tengo 2 tablas:

Tabla1 categorias: ID , NOMBRE

Tabla 2 anuncios: ID, CATEGORIA

Necesito mostrar en una tabla el numero de Anuncios que se encuentran por cada categoria, no hay problema pero cuando uso el count las categorias que tienen 0 anuncios no me las muestra, solo las que sí. Ando perdido. lo intente con LEFT JOIN pero tampoco funciono.

SELECT CATEGORIAS.apodo, CATEGORIAS.ID AS CATID, CATEGORIAS.imagen, CATEGORIAS.nombre AS CATN, count(ANUNCIOS.categoria) AS cantidad FROM CATEGORIAS INNER JOIN ANUNCIOS ON CATEGORIAS.ID=ANUNCIOS.categoria group by ANUNCIOS.categoria order by CATN ASC

Gracias por su ayuda
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Con un LEFT JOIN y un GROUP BY (como comenta el compañero) te debería de funcionar. Algo como:
PHP:
SELECT categorias.nombre,
        COUNT(anuncios.id) AS anuncios
    FROM categorias
        LEFT JOIN anuncios ON anuncios.categoria = categorias.id
    GROUP BY categorias.id;

Saludos.
 
Si sólo se permite una categoría por anuncio, el sistema lo tienes bien, en caso contrario de que un anuncio pueda tener dos categorías, te haría falta poner una tercera tabla de relación:

Inserir CODE, HTML ou PHP:
+-----------------+-------------+
| id_announcement | id_category |
+-----------------+-------------+
| 23              | 2           |
+-----------------+-------------+
| 14              | 7           |
+-----------------+-------------+
| 7               | 5           |
+-----------------+-------------+

En todo caso, y siguiendo el patrón de un anuncio > una categoría, deberás de usar un JOIN con GROUP BY como te han comentado.
 
Gracias no entendia muy bien lo de la agrupación y el count, el ejemplo de lombervid fue acertado

Gracias gracias 🙂
 
Voltar
Topo