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

Consulta Extraña...?

Estas en el tema de Consulta Extraña...? en el foro de Bases de Datos General en Foros del Web. Tengo otro problema y es el siguiente: Tengo esto en mi tabla: Cita: LName FName UdfNum UdfText --------------------------------------------------------------- Esquivel Rocha Juan Manuel 1 57-92-76-3456-8 Esquivel ...
  #1 (permalink)  
Antiguo 19/08/2005, 11:44
Avatar de Baby78  
Fecha de Ingreso: julio-2005
Mensajes: 142
Antigüedad: 18 años, 9 meses
Puntos: 0
Consulta Extraña...?

Tengo otro problema y es el siguiente:

Tengo esto en mi tabla:
Cita:
LName FName UdfNum UdfText
---------------------------------------------------------------
Esquivel Rocha Juan Manuel 1 57-92-76-3456-8
Esquivel Rocha Juan Manuel 2 307406
Esquivel Rocha Juan Manuel 3 7406
Esquivel Rocha Juan Manuel 6 Prueba
Esquivel Rocha Juan Manuel 7 06-Jul-1998
Esquivel Rocha Juan Manuel 8 EURJ-760625-666
Esquivel Rocha Juan Manuel 9 506
Esquivel Rocha Juan Manuel 11 - -
tengo la siguiente consulta

Código:
"SELECT upper(NAMES.FName)+' '+ upper(NAMES.LName)as FULLNAME, UDF.UdfNum , UDF.UdfText FROM NAMES INNER JOIN UDF ON NAMES.ID = UDF.NameID  where UDF.UdfText = '307406'
y me muestra lo siguiente:
Cita:
LName FName UdfNum UdfText
----------------------------------------
Esquivel Rocha Juan Manuel 2 307406
pero yo necesito que me muestre asi
Cita:
Esquivel Rocha Juan Manuel
57-92-76-3456-8
7406
Prueba
06-Jul-1998
EURJ-760625-666
506
Utilizo UdfText='307406' porque esa es mi clave para accesar, ya que lo pido por medio de un formulario en asp, pero necesito que cuando UdfNum sea igual a 1,3,6,7,8,9 me muestre esa informacion pero no he podido hacerlo

Si me pudieran ayudar

De antemano gracias de .

Última edición por Baby78; 22/08/2005 a las 14:31
  #2 (permalink)  
Antiguo 19/08/2005, 12:11
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
a ver, intenta con esto y dime si es lo que necesitas

Código PHP:
(SELECT upper(NAMES.FName)+' 'upper(NAMES.LName)as FULLNAME,
FROM NAMES INNER JOIN UDF ON NAMES.ID UDF.NameID  
where UDF
.UdfText '110532')
Union
(SELECT UDF.UdfText 
FROM NAMES INNER JOIN UDF ON NAMES
.ID UDF.NameID  
where UDF
.UdfText '110532'
AND UDF.UdfNum in (1,3,6,7,8,9) ) 
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #3 (permalink)  
Antiguo 19/08/2005, 13:02
Avatar de Baby78  
Fecha de Ingreso: julio-2005
Mensajes: 142
Antigüedad: 18 años, 9 meses
Puntos: 0
No funciona solo me muestra el FullName
  #4 (permalink)  
Antiguo 19/08/2005, 14:22
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
quitale la parte sobrante del segundo select

Cita:
(SELECT upper(NAMES.FName)+' '+ upper(NAMES.LName)as FULLNAME,
FROM NAMES INNER JOIN UDF ON NAMES.ID = UDF.NameID
where UDF.UdfText = '110532')
Union
(SELECT UDF.UdfText
FROM NAMES INNER JOIN UDF ON NAMES.ID = UDF.NameID
where UDF.UdfNum in (1,3,6,7,8,9) )
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #5 (permalink)  
Antiguo 19/08/2005, 16:19
Avatar de Baby78  
Fecha de Ingreso: julio-2005
Mensajes: 142
Antigüedad: 18 años, 9 meses
Puntos: 0
Tampoco, ya he probado varias cosas y no , el que tu pones me muestre pero todos los registros de la tabla y solo quiero que me muestre cuando UdfText='307406', seguire intentando

Última edición por Baby78; 22/08/2005 a las 14:32
  #6 (permalink)  
Antiguo 23/08/2005, 08:47
Avatar de Baby78  
Fecha de Ingreso: julio-2005
Mensajes: 142
Antigüedad: 18 años, 9 meses
Puntos: 0
Disculpen que insista pero es que no he podido dar con esto, y ya me estoy desesperando, por favor que alguien me ayude. Se los voy a agradecer mucho
  #7 (permalink)  
Antiguo 24/08/2005, 02:23
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
¿Te das cuenta de que lo que pides es incongruente?
¿como te va a mostrar los datos que tienen udftext distinto de 307406 si precisamente esa es la restricción que muestras?.
De todas las filas que has puesto al principio sólo hay una que cumpla la condición. Tiene que haber otro campo para restrigir y obtener esos registros.
Tal como has puesto y dices las cosas la consulta sería:
Código:
SELECT upper(NAMES.FName)+' '+ upper(NAMES.LName)as FULLNAME, UDF.UdfNum , UDF.UdfText 
FROM NAMES INNER JOIN UDF ON NAMES.ID = UDF.NameID  
where UDF.UdfText = '307406' or udfnum in (1,3,6,7,8,9)
pero evidentemente, esto no te va a devolver sólo lo que pides, pues seguramente existirán más filas con el campo udfnun con uno de esos valores.
¿No te estarás confundiendo y realmente quieres mostrar todas las filas que tienen un valor de "udf.nameid=names.id" concreto?
Si esto es así, una posiblidad es la siguiente:
Código:
SELECT upper(NAMES.FName)+' '+ upper(NAMES.LName)as FULLNAME, b.UdfNum , b.UdfText 
FROM (NAMES INNER JOIN UDF a ON NAMES.ID = UDF.NameID) 
join UDF b on a.udfnum=b.udfnum
where a.UdfText = '307406'
and b.UdfText != '307406'
Un saludo
__________________
Estoy contagiado de Generación-I

Última edición por Vice; 24/08/2005 a las 02:33
  #8 (permalink)  
Antiguo 24/08/2005, 08:09
Avatar de Baby78  
Fecha de Ingreso: julio-2005
Mensajes: 142
Antigüedad: 18 años, 9 meses
Puntos: 0
Te voy a mostrar mis tablas

Cita:
TABLA UDF
---------------------
ID
LOCGRP
NAMEID
UDFNUM
UDFTEXT
Cita:
TABLA NAMES
---------------------
ID
LOCGRP
LNAME
FNAME
COMPANY
NOTES
a ver si me puedes ayudar
  #9 (permalink)  
Antiguo 25/08/2005, 01:37
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Con lo que pones no me das más información de la que ya he visto. Poner la estructura de los campos no es suficiente sin decir su significado ni decir como se relacionan las tablas.

¿Has probado la última consulta que te he puesto?

Un saludo
__________________
Estoy contagiado de Generación-I
  #10 (permalink)  
Antiguo 25/08/2005, 08:04
Avatar de Baby78  
Fecha de Ingreso: julio-2005
Mensajes: 142
Antigüedad: 18 años, 9 meses
Puntos: 0
Si y no me funciono. Antes que nada te voy a dar las tablas bien:


Cita:
TABLA UDF
---------------------
ID int
LOCGRP int
NAMEID int //id para el empleado
UDFNUM smallint //valor para diferenciar el udftext
UDFTEXT nvarchar //Datos del empleado, dependen del udfnum


TABLA NAMES
---------------------
ID int //id para el empleado
LOCGRP int
LNAME nvarchar //Apellidos del empleado
FNAME nvarchar //Nombre del empleado
COMPANY smallint
NOTES ntext
Esto se debe hacer:
1. buscar al empleado cuando udfnum=2 es decir udftext='clave'
2. Ya que encontre al empleado igualar el valor de udfnum=2 al id (ya que id es un valor unico)
3. Despues hago una consulta para los demas datos

Bueno algo asi, espero haberme explicado y la verdad como voy empezando con esto me estoy enredando toda.

De antemano Gracias.
  #11 (permalink)  
Antiguo 25/08/2005, 08:14
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
hola.

segun lei en tu primer post quieres que la informacion que muestre el "select" lo haga en un formato distinto.

creo que en este caso, la select inicial es correcta. deberias recoger la informacion que devuelve esa "select" y mostrarla de la manera que tu quieras.

otra cosa. si le pones nombres tan raros a la base de datos, cuando te vallas de marcha y te tomes unas cuantas cervezas (o cubatas), luego no te vas a acordar que significaban.

creo que lo mejor es seguir la siguiente momenclatura:

nombre del cliente: nombre_cliente
tiempo de acceso: tiempo_acceso
numero de cubatas por individuo: numero_cubatas_individuo

no te cortes en la longitud de las palabras. los caracteres no cuestan dinero.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #12 (permalink)  
Antiguo 26/08/2005, 02:18
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
No, la primera consulta no está bien para obtener lo que quier.

Cita:
Esto se debe hacer:
1. buscar al empleado cuando udfnum=2 es decir udftext='clave'
2. Ya que encontre al empleado igualar el valor de udfnum=2 al id (ya que id es un valor unico)
3. Despues hago una consulta para los demas datos
La última consulta que te he puesto hace exactamente lo que tu dices, salvo que tiene una condición mal puesta:
Código:
SELECT upper(NAMES.FName)+' '+ upper(NAMES.LName)as FULLNAME, b.UdfNum , b.UdfText 
FROM (NAMES INNER JOIN UDF a ON NAMES.ID = UDF.NameID) 
join UDF b on a.nameid=b.nameid
where a.UdfText = '307406'
and b.UdfText != '307406'
sólo había que corregir la condición entre las tablas con alias a y b.
Un saludo.
__________________
Estoy contagiado de Generación-I
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 10:29.