FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda con una consulta sql
Buenas amigos tengo la siguiente consulta
Tengo tres tablas t1 idmaquina,numero t2 idcupie,nombre t3 idmaquina,idcupie,monto,idplanilla Como deberia hacer para que me muestre todos los registros cuya idplanilla=0 y idmaquina diferente de 0. [0=Cero] Yo trate de la siguiente manera pero no salen todos los resulatados SELECT t2.NOMBRE, t3.MONTO, t3.IDMAQUINA, t3.IDPLANILLA FROM t2 INNER JOIN (t1 INNER JOIN t3 ON t1.NUMERO = t3.MAQUINA) ON t2.IDCUPIE = t3.IDCUPIE WHERE (t3.MAQUINA<>-1) AND (t3.IDPLANILLA=0) ORDER BY t3.IDMONT; Donde estoy mal Saludos Marcelo |
#2
|
||||
|
||||
Código:
SELECT t2.NOMBRE, t3.MONTO, t3.IDMAQUINA, t3.IDPLANILLA FROM t2 INNER JOIN (t1 INNER JOIN t3 ON t1.NUMERO = t3.MAQUINA) ON t2.IDCUPIE = t3.IDCUPIE WHERE (t3.MAQUINA<>0) AND (t3.IDPLANILLA=0) ORDER BY t3.IDMONT
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
Lamentablemente no me sirve me muestra solo el que tiene idmaquina -1 y no los que quiero que son todos menos los que idmaquina sean -1. Gracias de todas maneras
|
#4
|
|||
|
|||
Hola:
Se supone que la tabla principal de esta consulta es la t3, digo esto porque las otras dos tablas parecen tablas de lookup, para tomar datos descriptivos o algo así, de modo que las demás deben ir relacionadas a ésta, y no como parece que lo tienes. Algunas dudas: - ¿Por qué aparece un INNER JOIN a t1 si esta tabla no aporta nada al resultado de la consulta? - Cuando relacionas t1.NUMERO = t3.MAQUINA, ¿no será t1.MAQUINA el campo a relacionar? - Parece Access, por la forma tan peculiar de escribir los INNERS, lo que te ofrezco posiblemente haya que retocarlo (o el mismo Access lo corregirá probablemente): Código:
SELECT t2.NOMBRE, t3.MONTO, t3.IDMAQUINA, t3.IDPLANILLA FROM t3 INNER JOIN t1 ON t1.NUMERO = t3.IDMAQUINA // ¿t1.IDMAQUINA = t3.IDMAQUINA? INNER JOIN t2 ON t2.IDCUPIE = t3.IDCUPIE WHERE (t3.MAQUINA <> 0) AND (t3.IDPLANILLA = 0) ORDER BY t3.IDMONT;
__________________
Guía de Estilo Última edición por andres1569 fecha: 26-07-2003 a las 12:30:41. |
#5
|
|||
|
|||
Pues respondo tus tres interrogantes
Como dices t1 estaba demas y la razon de esto es que como no sabia cual era la forma de crear una sentencia sql para mi objetivo me ayude de access, pero en realidad la base de datos esta en interbase y trabajo y hago las pruebas en el ibconsole. Efectivamente la relacion esta correcta el problema es que al definir las tablas hubo una equivocacion. Y por ultimo la solucion que tu me planteas no funciona, me sale un error de que no encuentra (t3.idcupie) cuando hago t2.idcupie=t3.idcupie Y por ultimo despues de leer (desasnarme ) un poco mas sobre el concepto de inner joins logre mi objetivo con la siguiente sentencia: Select * from t3 inner join t2 on t2.IDCUPIE=t3.IDCUPIE where (t3.IDPLANILLA=0) and (t3.MAQUINA>0) order by montos.IDMONT; Gracias por la ayuda y los comentarios me sirvieron de mucho |
|
|
|