(http://img35.imageshack.us/img35/7159/sinttulo2ad.png)
En curso estan:
1 - Matematica
2 - Lenguaje
3 - Historia
En detalle estan
1 - 1
Como hacer que en una consulta me muestre los cursos que no estan en detalle.
Gracias.
La más básica ..
select *
from curso
where curso.idcurso not in (select detalle.idcurso from detalle)
Saludos
disculpa novlucker, me podes explicar esto :?NOT IN (SELECT detalle.idcurso FROM detalle)
CitarInsertar Cita
disculpa novlucker, me podes explicar esto :?
Código
NOT IN (SELECT detalle.idcurso FROM detalle)
se hace una subconsulta (consulta dentro de otra), en la que se buscan todos los id's de la tabla detalle, y con ayuda del not lo "negamos", de forma que en palabras la consulta sería algo como:
Muéstrame
todos los campos
de la tabla curso,
teniendo en cuenta que los que me muestres
no tienen que tener un
id igual al que hay en la tabla detalle
la explicacion perfecta, ahora, que ganas con esto?
no se, es la consulta que pidió hadess :
CitarComo hacer que en una consulta me muestre los cursos que no estan en detalle.
, pregúntale a él :P
jaaj, listo gracias! un saludo y suerte!
jaja ... como han dicho, en realidad la consulta es así .. buscas "X" elementos que además estén dentro de otro subgrupo, no hay muchas vueltas :P
Saludos
Las consultas SQL mientras más largas más entretenidas se hacen, hace poco en un examen me tocó una consulta que incluía un case xD
Yo lo queria hacer con inner join, pero al final tuve que hacerlo de esa forma porque me aburri xD ..
con inner no puedes hacerlo, porque inner muestra solo registros cuyos campos que estes relacionando existan en ambas tablas, todos aquellos que esten en una pero no en otra son omitidos :P
A la consulta de Nov creo que le haria falta un GROUP BY o un DISTINCT , porque ya que es la tabla muchos entonces el id de tabla padre se repetira muchas veces, entonces, se evaluara todas esas veces que aparezca, encambio, si aparece una vez ya es obvio que ese no esta en la tabla padre, por lo tanto la consulta (segun mi logica) sera mas rapida.
nose si me explico xD
yo la haria asi
SELECT *
FROM curso
WHERE idcurso NOT IN (SELECT DISTINCT idcurso FROM detalle)
salu2
Lo que ocurre es asumi que la relación era de 1 a 1 y por eso no puse el DISTINCT, en relación de 1 a N es más que necesario, tal y como has puesto :P
Saludos