obtener registros de sql que pueden estar o no en otra tabla [Solucionado]
Publicado: 2 Noviembre, 2010 - 12:01 obtener registros de sql que pueden estar o no en otra tabla [Solucionado]
Estoy medio fuera de ritmo con sql e intento hacer una consulta medio complicada y no me puedo dar cuenta como hacer para que funcione.
tengo 3 tablas
articulo(id , titulo, cuerpo)
seccion (id, nombre)
seccionArticulo (idArticulo, idSeccion)Es posible que un articulo no pertenezca a ninguna sección.
necesito hacer una consulta que me devuelva todos los artículos que no estén en una seccion dada de id =x
Escribí una consulta así.
si hay alguien que me pueda dar una mano con esta consulta que me esta volviendo loco..!
" SELECT * FROM articulo where id!= (SELECT a.id
FROM seccion s join seccionArticulo sa ON (s.id = sa.idSeccion)
JOIN articulo a ON (a.id=sa.idArticulo)
WHERE s.id = $num )"pero solo funciona con secciones que tienen un solo articulo, de lo contrario recibo el siguiente error
[Native message: Subquery returns more than 1 row]O sea, que funciona solo con un articulo.
Me estoy rompiendo la cabeza pero eso es lo que mejor se me ocurrió..
- Inicie sesión o regístrese para enviar comentarios
- 469 lecturas


" SELECT * FROM articulo where id!= (SELECT a.idFROM seccion s join seccionArticulo sa ON (s.id = sa.idSeccion)
JOIN articulo a ON (a.id=sa.idArticulo)
WHERE s.id = $num )"
Cambiando != por NOT IN funciona
" SELECT * FROM articulo where NOT IN (SELECT a.idFROM seccion s join seccionArticulo sa ON (s.id = sa.idSeccion)
JOIN articulo a ON (a.id=sa.idArticulo)
WHERE s.id = $num )"
estaría bueno poder quitar ese NOT IN.
pero como ya lo hice funcionar voy a marcar como solucionado
En sql tambien existe la posibilidad de usar exists.
Una explicacion aqui