Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/07/2013, 12:30
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Obtener registros que tengan 2 relaciones en la tabla relacional

Cita:
WHERE contenido_x_categorias.idCategoria = 1 AND contenido_x_categorias.idCategoria = 2
Eso no te va a funcionar jamás, porque son condiciones contradictorias.
El WHERE se aplica a cada registro que se evalúa, y un mismo registro no puede tener dos valores diferentes para el mismo campo al mismo tiempo.
Además, en el contexto de lo que necesitas saber, como habrás notado, no se necesitan las tres tablas. Sólo dos (si agregas la tercera, a menos que quieras obtener el nombre de la categoría, no pone ni saca nada a la solución).
Lo que debe evaluarse es que:
1) Tenga más de una categoría.
2) Esas categorías sean 1 y 2.
Código MySQL:
Ver original
  1. SELECT N.id, N.titulo, N.contenido
  2. FROM NOTICIAS N INNER JOIN NOTICIAS_X_CATEGORIAS ON N.id = NC.idNoticia
  3. WHERE NC.idcategoria IN (1, 2)
  4. HAVING COUNT(*) = 2;

Ahora bien, si además quieres ordenarlas:
Código MySQL:
Ver original
  1. SELECT id, titulo, contenido
  2.     SELECT N.id, N.titulo, N.contenido, N.fecha
  3.     FROM contenido N INNER JOIN contenido_X_categorias ON N.id = NC.idNoticia
  4.     WHERE NC.idcategoria IN (1, 2)
  5.     GROUP BY N.id
  6.     HAVING COUNT(*) = 2) T
  7. ORDER BY N.fecha;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)