• Viernes 8 de Noviembre de 2024, 20:08

Autor Tema:  Sentencia Sql Con Where  (Leído 5934 veces)

chryobcn

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Sentencia Sql Con Where
« en: Viernes 21 de Mayo de 2004, 00:53 »
0
Saludos

Estoy intentando hacer la siguiente consulta:

Código: Text
  1.  
  2. SELECT H.num_habitacio, H.data_alta, I.nom AS incidencia, H.data_fin, E.nom + ' ' + E.cognom1 + ' ' + E.cognom2 AS nombre FROM incidencia_habitacio H, incidencia I, treballador E WHERE I.codi=H.codi_incidencia AND E.dni=H.dni_treballador
  3.  
  4.  

El problema esta que el valor H.dni_treballador por defecto es NULL hasta que no se inserta otro valor mas adelante, por lo tanto esta consulta no me devuelve ningun valor.

Al tener len la tabla registros con este campo en NULL y con valores validos no se como hacer para evitar que si es NULL muestre los resultados.

Gracias

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Sentencia Sql Con Where
« Respuesta #1 en: Viernes 21 de Mayo de 2004, 03:05 »
0
utiliza la sentencia nvl, la cual reemplaza null por un valor valido.. ej:
para hacer que cuando H.dni_treballador sea null, no se retorne nada asi:
Código: Text
  1.  
  2. SELECT H.num_habitacio, H.data_alta, I.nom AS incidencia, H.data_fin,
  3.             E.nom + ' ' + E.cognom1 + ' ' + E.cognom2 AS nombre
  4. FROM    incidencia_habitacio H, incidencia I, treballador E
  5. WHERE  I.codi=H.codi_incidencia AND E.dni=H.dni_treballador
  6. AND      nvl(H.dni_treballador,-1) <> -1;
  7.  
  8.  
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

chryobcn

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Sentencia Sql Con Where
« Respuesta #2 en: Viernes 21 de Mayo de 2004, 08:04 »
0
Saludos nuevamente

Desgraciadamente no me accepta el nvl(), para más información utilizo sql server 2000 la versión personal.

He probado introduciendo la clausula AND H.dni_treballador IS NOT NULL pero claro si este valor es null no me muestra un registro con ese campo null. Lo que necesito es que me muestre los demas valores de ese registro menos los que esten relacionados con el valor NULL.

Para aclarar las cosas explicare por encima lo que tengo:

En una parrilla cargo la información de la tabla1: el numero de habitacion y el tipo de incidencia (estos datos siempre existen) y el nombre del trabajador que ha solucionado esa incidencia (este esta en otra tabla que lo recupero mediante el dni que tengo en la tabla1) el problema esta en que el dni del trabajador es NULL hasta que no se soluciona la incidencia y necesito que se cargen todos los registros aunque el nombre del trabajador este vacio.

Espero que alguien pueda darme una solución, si existe, sino tendre que quitar el nombre de la parrilla.

Gracias.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Sentencia Sql Con Where
« Respuesta #3 en: Viernes 21 de Mayo de 2004, 16:45 »
0
lamentablemente  no se como tratar ese tema en sql server.. solo en oracle..
bye
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

chryobcn

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Sentencia Sql Con Where
« Respuesta #4 en: Viernes 21 de Mayo de 2004, 17:01 »
0
Gracias por tu ayuda, a malas quitare esa información de la parrilla y solo mostrare si se ha solucionado.

alexis salinas

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Sentencia Sql Con Where
« Respuesta #5 en: Lunes 21 de Junio de 2004, 20:41 »
0
Podrias crear una funcion que retorno el valor adecuado.
Pero creo que SQL PERSONAL no tiene funciones.

O tambien crear una vista de la tabla que contiene el valor NULL

y hacer la tranformacion del valor null utilizando la instruccion
CASE


SELECT nombre,
   CASE campo_posee_null    WHEN is null then 0
      else
              campo_posee_null
        END AS valor
FROM tabla_xxx
ORDER BY 2
cualquier consulta
as_asar@hotmail.com


Atte
Alexis Salinas r

Alvaro TC

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Sentencia Sql Con Where
« Respuesta #6 en: Miércoles 11 de Agosto de 2004, 01:43 »
0
SELECT H.num_habitacio, H.data_alta, I.nom AS incidencia, H.data_fin,
           E.nom + ' ' + E.cognom1 + ' ' + E.cognom2 AS nombre
FROM    incidencia_habitacio H, incidencia I, treballador E
WHERE  I.codi=H.codi_incidencia AND E.dni=H.dni_treballador
AND      isnull(H.dni_treballador,-1) <> -1;

mateamargo

  • Miembro activo
  • **
  • Mensajes: 67
    • Ver Perfil
Re: Sentencia Sql Con Where
« Respuesta #7 en: Viernes 21 de Enero de 2005, 19:12 »
0
Bueno, lo que tenés que hacer es un LEFT JOIN para que te traiga todos los datos (indistintamente de si tienen NULL o no).
La sentencia es la siguiente:

Código: Text
  1.  
  2. SELECT H.num_habitacio,
  3.             H.data_alta,
  4.             I.nom AS incidencia,
  5.             H.data_fin,
  6.             E.nom + ' ' + E.cognom1 + ' ' + E.cognom2 AS nombre
  7. FROM    incidencia_habitacio H LEFT JOIN incidencia I ON I.codi=H.codi_incidencia
  8.             LEFT JOIN treballador E ON H.dni_treballador = E.dni
  9.  
  10.  

Fijáte si te trae bien los resultados. También podés usar INNER JOIN en caso de que no quieras los nulos, o sino RIGHT JOIN (el orden de las tablas debe ser otro).
Cualquier cosa escribí de nuevo.
Saludos.

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Sentencia Sql Con Where
« Respuesta #8 en: Lunes 24 de Enero de 2005, 11:16 »
0
HOla,

Si en la Select pones lo siguiente:

SELECT ISNULL(campoTabla,ValorReemplazo) AS NombreColumna

Al devolverte los datos de la tabla, te reemplazará todos los valores NULL de la columna por el valor de reemplazo que le indiques.

EN tu caso podrías poner 'Nadie' para el nombre del empleado.ç

A ver si te sirve de algo. Saludos
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

mateamargo

  • Miembro activo
  • **
  • Mensajes: 67
    • Ver Perfil
Re: Sentencia Sql Con Where
« Respuesta #9 en: Martes 25 de Enero de 2005, 14:20 »
0
Cita de: "Güorker"
HOla,

Si en la Select pones lo siguiente:

SELECT ISNULL(campoTabla,ValorReemplazo) AS NombreColumna

Al devolverte los datos de la tabla, te reemplazará todos los valores NULL de la columna por el valor de reemplazo que le indiques.

EN tu caso podrías poner 'Nadie' para el nombre del empleado.ç

A ver si te sirve de algo. Saludos
Ojo que la función ISNULL es propia del SQL Server, si usa otro motor no le va a servir.
Saludos.