Duda consulta MySQL

DarkSoldier

hi!!

Pues es algo basico de mysql pero no me sale :)

3 tablas:

POST [id_post, url]
POST_CAT [id_post, id_cat]
CATEGORIA [id_cat, nombre]

Uso active record de CI pero os pego tambien el SELECT

->select('p.url, c.nombre')
->from('post_cat pc, posts p, categorias c')
->where('pc.id_post = p.id_post')
->where('c.id = pc.id_cat')
->group_by('pc.id_cat')
SELECT c.nombre, `p`.`url` 
FROM (`post_cat` pc, `posts` p, `categorias` c) 
WHERE `pc`.`id_post` = p.id_post 
AND `c`.`id` = pc.id_cat 
GROUP BY `pc`.`id_cat`

Me saca todas las categorias con una URL, el caso es que quiero me salen URLs duplicadas porque algunas URLs comparten categorias, entonces.. como selecciono diferentes URLs para cada categoria?

Thanat0s

Cambiando el group by a url.

Ya que la categoría nunca va a ser distinta para la misma url.

1 respuesta
DarkSoldier

#2 si cambio/quito el group by me muestra mil veces cada categoria

1 respuesta
Thanat0s

#3 Es que no has explicado muy bien que es lo que quieres que salga, en #1 te faltan palabras xD

Lo que yo he entendido es que querías que saliera una lista de categorías con las urls de los post de cada categoría.

Y tu idea es que no se repitan las categorías, ¿no?
Osea que salga Categoría1 con todas sus URLS y la columna de la izquierda en blanco, mientras que la de la derecha sí que sale rellena.

1 respuesta
DarkSoldier

#4 nono, perdona xD yo tengo varias categorias y dentro de cada categoria varias URLs, el caso es que una URL puede tener varias categorias, entonces mi intención es mostrar una lista con todas las categorias y 1 unica url por categoria pero esa URL no puede repetirse con otra categoria sabes?

1 respuesta
Thanat0s

#5

Categoría1
URL1
URL2

Categoría2
URL1
URL3

Categoría3
URL2
URL3

Con este ejemplo, ¿qué es lo que tú querrías mostrar?

Edit: entiendo lo que pides, pero tal como lo tienes pensado no se puede hacer.
Si la URL pertenece a más de una categoría entonces vas a tener casos en los que se van a repetir sí o sí URL's en categorías.

1 respuesta
DarkSoldier

Cat1 - URL1
Cat2 - URL3
Cat3 no se mostraria? xDD duda existencial xD pero vamos, va a ser imposible que eso pase XD cada categoria tendrá mas de 1000 urls xD

#6 y no hay manera de poder hacerlo??? a ver, estoy tirando de CI, si necesito varias consultas lo haré peró no se xD

Thanat0s

Dudo muchísimo que esto se pueda lograr con una sentencia sql o al menos con una simple.

Este problema tiene toda la pinta de resolverse con programación dinámica, backtracking o algo así.

Usuarios habituales

  • Thanat0s
  • DarkSoldier