Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Where not exists(select null

Estas en el tema de Where not exists(select null en el foro de SQL Server en Foros del Web. Buenas Estaba mirando ejemplos de código SQL y he visto esto, usado para introducir datos en un ejemplo de relaciones de amistad: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 28/08/2014, 11:30
 
Fecha de Ingreso: enero-2008
Mensajes: 136
Antigüedad: 16 años, 3 meses
Puntos: 1
Where not exists(select null

Buenas

Estaba mirando ejemplos de código SQL y he visto esto, usado para introducir datos en un ejemplo de relaciones de amistad:

Código SQL:
Ver original
  1. INSERT INTO FRIENDSHIP
  2. SELECT @userid, @friendid, 1
  3.   FROM FRIENDSHIP f
  4.  WHERE NOT EXISTS(SELECT NULL
  5.                     FROM FRIENDSHIP t
  6.                    WHERE (t.userid = @friendid AND t.friendid = @userid)
  7.                       OR (t.userid = @userid AND t.friendid = @friendid)

¿Alguien podría explicarme como funciona este cacho?
Código SQL:
Ver original
  1. WHERE NOT EXISTS(SELECT NULL

Comprendo lo que significa individualmente cada palabra pero no la lógica que ha llevado a escribirlo todo de ese modo.

saludos
  #2 (permalink)  
Antiguo 28/08/2014, 11:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Where not exists(select null

va a insertar siempre y cuando no exista la relacion entre el usuario y el amigo eso significa ese query...
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 28/08/2014, 12:02
 
Fecha de Ingreso: enero-2008
Mensajes: 136
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Where not exists(select null

Hola

¿Podrías diseccionarlo/indagar un poco más, por favor?



Y si por ejemplo quisieras que inserte siempre que SI exista ya esa relación entonces sería:

Código:
WHERE EXISTS(SELECT NULL
¿o?
Código:
WHERE NOT EXISTS(SELECT NOT NULL
  #4 (permalink)  
Antiguo 28/08/2014, 13:05
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Where not exists(select null

Es correcto, NOT EXISTS (que no exista), EXISTS (que exista), y simplemente es el juego de los CONJUNTOS, matemática empleada a la informatica
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 28/08/2014, 13:54
 
Fecha de Ingreso: enero-2008
Mensajes: 136
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Where not exists(select null

Cita:
Iniciado por Libras Ver Mensaje
va a insertar siempre y cuando no exista la relacion entre el usuario y el amigo eso significa ese query...
¿Pero ese select null quiere decir que selecciona los casos que no arrojen ningún resultado o quiere decir que no quieres seleccionar ninguna columna?
  #6 (permalink)  
Antiguo 28/08/2014, 14:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Where not exists(select null

en tu caso cuando selecciona null quiere decir que si el resultado da null no existen coincidencias por lo que no existe relacion de amigos entre los parametros que manda..el porque el null, si lo entiendo pero no se como explicartelo jejejeje amigo iisaias puede explicar el porque el null???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 29/08/2014, 13:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Where not exists(select null

En cuanto al SELEC NULL y SELECT NOT NULL, es una verdadera aberración, ya que no se puede hacer de esa forma, la comparación de datos NULL, siempre va en el filtro (WHERE).
Código SQL:
Ver original
  1. SELECT *
  2. FROM mytabla
  3. WHERE CAMPO IS NULL

o
Código SQL:
Ver original
  1. WHERE campo IS NOT NULL
__________________
MCTS Isaias Islas

Última edición por gnzsoloyo; 29/08/2014 a las 14:17

Etiquetas: funcion, null, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:15.