Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Consulta Extraña...? (http://www.forosdelweb.com/f21/consulta-extrana-326558/)

Baby78 19/08/2005 11:44

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 :corazon: .

Linterns 19/08/2005 12: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) ) 


Baby78 19/08/2005 13:02

No funciona solo me muestra el FullName

Linterns 19/08/2005 14:22

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) )

Baby78 19/08/2005 16:19

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

Baby78 23/08/2005 08:47

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

Vice 24/08/2005 02:23

¿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

Baby78 24/08/2005 08:09

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 :-(

Vice 25/08/2005 01:37

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

Baby78 25/08/2005 08:04

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. :-)

haron 25/08/2005 08:14

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.

Vice 26/08/2005 02:18

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.


La zona horaria es GMT -6. Ahora son las 21:04.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.