Que significa
hola a todos...
alguien me puede explicar que significa o para que se usa (+) en un where de un select.
Gracias de antemano
alguien me puede explicar que significa o para que se usa (+) en un where de un select.
Gracias de antemano
Este operador sirve para hacer lo que en SQL normal se conoce como un JOIN.
supon que tienes estas dos tablas:
Tabla alumnos:
alumno nombre
---------- -----------
001 a
002 b
003 c
004 d
Tabla Sistencia:
alumno fecha
---------- --------
001 01/01/2005
002 01/01/2005
003 01/01/2005
001 01/02/2005
003 01/02/2005
Si quieres hacer un query para ver cuantas veces asistio cada alumno:
select a.alumno, a.nombre, count(b.fecha)
from alumnos a, asistencia b
where a.alumno = b.alumno
group by a.alumno, a.nombre
Esto te devolveria:
alumno nombre contador
001 a 2
002 b 1
003 c 2
Si te das cuenta no salio el alumno 004, porque nunca nunca asistio. Pero en tu listado deberia de tener un 0.
Entonces, para que salga haces lo siguiente:
select a.alumno, a.nombre, count(b.fecha)
from alumnos a, asistencia b
where a.alumno = b.alumno(+)
group by a.alumno, a.nombre
Esto te devolveria:
alumno nombre contador
001 a 2
002 b 1
003 c 2
004 d 0
En el lado donde pones el (+), es donde esta el campo en cuya tabla no este presente información relacionada.
supon que tienes estas dos tablas:
Tabla alumnos:
alumno nombre
---------- -----------
001 a
002 b
003 c
004 d
Tabla Sistencia:
alumno fecha
---------- --------
001 01/01/2005
002 01/01/2005
003 01/01/2005
001 01/02/2005
003 01/02/2005
Si quieres hacer un query para ver cuantas veces asistio cada alumno:
select a.alumno, a.nombre, count(b.fecha)
from alumnos a, asistencia b
where a.alumno = b.alumno
group by a.alumno, a.nombre
Esto te devolveria:
alumno nombre contador
001 a 2
002 b 1
003 c 2
Si te das cuenta no salio el alumno 004, porque nunca nunca asistio. Pero en tu listado deberia de tener un 0.
Entonces, para que salga haces lo siguiente:
select a.alumno, a.nombre, count(b.fecha)
from alumnos a, asistencia b
where a.alumno = b.alumno(+)
group by a.alumno, a.nombre
Esto te devolveria:
alumno nombre contador
001 a 2
002 b 1
003 c 2
004 d 0
En el lado donde pones el (+), es donde esta el campo en cuya tabla no este presente información relacionada.
