FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
||||
|
||||
Sql
Hola a todos estoy haciendo una prueba para que al ejecutar una consulta, busque en 2 tablas distintas (NO JOIN).
Ejemplo tabla NISSAN clave nombre Tabla Peugeot clave nombre mi sintaxis es: SELECT DISTINCT * FROM pruebita.nissan, pruebita.peugeot si muestra el resultado...... pero al querer hacer por medio de WHERE: SELECT DISTINCT * FROM pruebita.nissan, pruebita.peugeot where clave='1'; Mensaje de error: Column clave in where clause is ambiguous mmmmm, lo unico que quiero implementar, es q por medio de mi sintaxis SQL busque en las dos tablas(NO PARA UNIR), pues quiero mostrar los resultados en DBedits. Alguna sugerencia? Karla |
#2
|
||||
|
||||
No entiendo bien. ¿Quieres un resultado con cuatro columnas (las dos de cada tabla), o con dos columnas pero con los registros de ambas tablas?
Si es lo primero, ¿qué tiene de malo un JOIN? Relamente lo que haces es un JOIN, pero si no pones condiciones lo hace todos contra todos. Si es lo segundo, ¿qué tiene de malo un UNION? En cualquier caso, puedes desambiguar anteponiendo el nombre de la tabla, por ejemplo:
¿pruebita es el nombre de la base? // Saludos |
#3
|
|||
|
|||
Consulta SQL
Hola:
Otra via que pudieras usar si estuvieses usando SQL Server 2000 es crear un Procedimiento Almacenado que incluya una tabla temporal como este ejemplo
De esta forma le podrias asignar a los edit los valores de los campos de esta consulta. Saludos Luis Garcia |
#4
|
||||
|
||||
Gracias Roman y Lgarcia.... como siempre aclarando mis confusiones
UNION no he leido sobre esta clausula, voy a checar la documentacion en linea. Y pruebita si es mi Base de Datos, la cual contiene 2 Tablas: Nissan y Peugeot. Y si, lo que quiero es mostrar mis resultados de ambas tablas en una sola columna, voy a hacer pruebas y posteo los resultados. |
#5
|
||||
|
||||
oye karla, que esta mal eso de
estas haciendo un producto cartesiano... la forma correcta es
-Paoti
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás... análisis de información análisis y diseño de sistemas Paoti Rios Reséndiz |
#6
|
||||
|
||||
Cita:
Hecho con MySQL Ahora lo voy a traducir para el Delphi 7, implementando un Boton y DBedit, hago pruebas y porteo los resultados |
#7
|
||||
|
||||
Tengo una pregunta al respecto:
Veo que esto lo estan usando en MySQL, cuando se usa Union en FireBird este hace una especie de Distinct al resultado de dicha union de consultas, pero para evitar dicho Distinct hay que hacer Union All, ¿En MySQL como trabaja este asunto?, gracias por vuestra atención amigos .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#8
|
||||
|
||||
Es igual. Por defecto, se excluyen filas repetidas y se usa union all para incluir todas.
// Saludos |
#9
|
||||
|
||||
Gracias roman .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#10
|
||||
|
||||
Encontre este link que explica eso del Union + ALL
http://www.plus2net.com/sql_tutorial/sql_union.php |
#11
|
||||
|
||||
Ahora le estoy poniendo una Clausula WHERE:
Pero me muestra mis 10 registros que tengo: 5 de Nissan y 5 de Peugeot. Esta mal implementada la clausula Where aqui? |
#12
|
||||
|
||||
Cita:
En cuanto a la clausula where que estas usando no le veo ningun problema, ¿No sera que todos los Nissan los tienes con clave 1?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#13
|
||||
|
||||
no, tengo de clave 1 .. 5 con diferentes modelos en Peugeot
y de la 6 .. 10 con diferentes modelos en Nissan Sigo leyendo mas, para encontrar la solucion |
#14
|
||||
|
||||
Algo no está bien. El where sólo aplica al select anterior (Nissan en este caso) y no a toda la unión. Si ningún nissan tiene clave=1, debería regresarte sólo los de peugeot.
Si quieres aplicar una condición a toda la unión, puedes hacerlo a través de una subconsulta:
// Saludos |
#15
|
||||
|
||||
es así:
un where para cada consulta intenatlo, no me hagas mucho caso.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás... análisis de información análisis y diseño de sistemas Paoti Rios Reséndiz |
#16
|
||||
|
||||
Es tal como dices Paoti.
// Saludos |
#17
|
||||
|
||||
un where para cada consulta intenatlo, no me hagas mucho caso. exacto, al fin pude checar tu consejo Paoti, es cierto ahora si, ya puedo mostrar el campo que corresponde a mi clave de auto. Gracias a todos los que me ayudaron a entender esta sentencia UNION. Ahora lo voy a pasar a mi delphi. |
#18
|
||||
|
||||
aunque ya detecte una falla en la sintaxis, por ejemplo, si escribo una clave que no existe Clave="11" en mi resultado
El resultado lo muestra como NULL; Lo que pasa es que en Tabla Peugeot no existe 11, pero en tabla Nissan si existe la 6. Voy a checar este error. |
#19
|
||||
|
||||
no te entendi, con eso de que lo muestra nulo, las sentencias where son independientes, es decir, son propias solo para el ambito sentencia que las esta usando. en este caso, son dos "where" independientes
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás... análisis de información análisis y diseño de sistemas Paoti Rios Reséndiz Última edición por Paoti fecha: 27-08-2007 a las 23:05:46. Razón: Yo y mi forma d eescribir <-- lo ven, yo y mi forma de escribir rápida. (por segunda vez) |
#20
|
||||
|
||||
Cita:
Ahora si en la sentencia SQL tu pones ejemplo una clave='4' (te muestra un auto de Peugeot) pero si ahora tu pones una 9 (En teoria debe mostrar un auto de la Nissan), pero no lo unico que muestra son claves de la tabla Peugeot. |
|
|
|