Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   mostrar registro solo una vez cuando hay valor nulo (https://www.clubdelphi.com/foros/showthread.php?t=76561)

Gaim2205 09-11-2011 14:45:09

mostrar registro solo una vez cuando hay valor nulo
 
Hola amigos, les traigo de nuevo una consulta sql con la que he estado "batallando" un buen rato, seguro que para algunos de ustedes tomara un par de minutos nada mas.

Código SQL [-]
select namn, id, ve.kod from ek_personal, ek_avtalsomrade ve where id is null or  avtals_omr_id = ve.id
y me da como resultado:

namn id kod
juan 1 uno
pedro null uno
pedro null dos
pedro null tres

el campo ve.kod tiene 3 valores (uno, dos tres) por lo cual, cuando una id es null, me muestra el registro 3 veces. Como puedo hacer para que solo lo muestre una ves, y el
campo kod se muestre vacio, es decir:

namn id kod
juan 1 uno
pedro null -

Gracias y saludos.

oscarac 09-11-2011 16:20:51

trata de usar Joins...

Coloca un ejemplo de como estan los datos.... para darte una mejor respuesta

Gaim2205 09-11-2011 16:50:21

No se de que otra forma explicarlo. intento otra vez:
Código SQL [-]
select namn, ID_1, ek_avtalsomrade.kod from ek_personal, ek_avtalsomrade where ID_1 is null or ID_1 = ek_avtalsomrade.ID

los campos ID_1 e ID (ek_personal y ek_avtalsomrade) estan relacionados mediante llave foranea. En ek_avtalsomrade, a cada ID le corresponde un codigo (uno, dos, tres). Pero cuando ek_personal.ID_1 sea nulo quiero que me muestre el campo kod vacio y solo una vez. Vuelvo a poner la tablita, creo que asi se entiende muy facil:

namn - id - kod
juan - 1 - uno
pedro - null - uno
pedro - null - dos
pedro - null - tres

el campo ek_avtalsomrade.kod tiene 3 valores posibles(uno, dos, tres) por lo cual, cuando una ID_1 es null, me muestra el registro 3 veces. Como puedo hacer para que solo lo muestre una ves, y el
campo kod se muestre vacio, es decir:

namn id kod
juan - 1 - uno
pedro - null - 'vacio'

espero no haber confundido mas. :confused:

oscarac 09-11-2011 16:53:51

los datos que has colocado ahi de que tabla es???? ek_personal o ek_avtalsomrade
y la otra tabla que datos tiene?

Gaim2205 09-11-2011 16:55:33

tabla ek_avtalsomrade: ID(int), kod(char)
tabla ek_personal: ID_1 (int) puede ser null

oscarac 09-11-2011 17:04:53

Cita:

Empezado por Gaim2205 (Mensaje 418000)
tabla ek_avtalsomrade: ID(int), kod(char)
tabla ek_personal: ID_1 (int) puede ser null

creo que no has entendido mi pregunta....

que datos tiene

Ejemplo
Cita:

Tabla1
KOD ----- Nombre-----Valor
001------aaaaaaaa------3
002------bbbbbbbb------2
Cita:

Tabla2
KOD-----Precio-----Unidad
001-------3--------UND
001-------2--------UND
005-------6--------KIL

Gaim2205 09-11-2011 17:11:30

Tabla 1 (ek_personal)
NOMBRE ------ ID
juan ------- 1
pedro ------ null
luis -------- null

Tabla 2
ID ------ KOD
1 ------ uno
2 ------ dos
3 ------ tres

resultado que obtengo:
NOMBRE ----- KOD
juan ----- uno
pedro ----- uno
pedro ----- dos
pedro ----- tres
luis ----- uno
luis ----- dos
luis ----- tres

y el resultado deseado es:

NOMBRE ----- KOD
juan ----- uno
pedro ----- vacio
luis ----- vacio


gracias por el interes. :o

oscarac 09-11-2011 17:18:44

y has tratado de esta forma?

Código SQL [-]
 
Select namn, id, t2.KOD From ek_personal t1 Left join ek_avtalsomrade t2 on t1.id = t2.id

Gaim2205 09-11-2011 17:21:36

pues como dije. Hay gente mas habil que en 2 minutos lo soluciona facilmente. No se me da mucho lo de los joins todavia, tendre que leer un poco. Gracias!!!

ElDioni 09-11-2011 17:24:52

Puedes probar con lo siguiente:

Código SQL [-]
SELECT ek_personal.Nombre, ek_avtalsomrade.KOD
FROM ek_personal LEFT JOIN ek_avtalsomrade ON ek_personal.Id = ek_avtalsomrade.Id;

Dinos que te muestra al hacer la consulta de esta forma.

Saludos.

oscarac 09-11-2011 17:26:18

Cita:

Empezado por Gaim2205 (Mensaje 418013)
pues como dije. Hay gente mas habil que en 2 minutos lo soluciona facilmente. No se me da mucho lo de los joins todavia, tendre que leer un poco. Gracias!!!

y se soluciono?

Gaim2205 09-11-2011 17:32:37

si, me da el resultado que quiero. :)

NOMBRE ----- KOD
juan ----- uno
pedro ----- vacio
luis ----- vacio

ElDioni 09-11-2011 17:33:50

Vaya, parece que se me adelantaron.

Saludos.


La franja horaria es GMT +2. Ahora son las 18:56:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi