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

[SOLUCIONADO] Unir dos tablas sin campos en común.

Estas en el tema de Unir dos tablas sin campos en común. en el foro de Bases de Datos General en Foros del Web. Buenos días. Esperando te encuentres bien, estoy teniendo la siguiente situación, tengo dos tablas, con las siguientes informaciones: Tabla 1 (RRHH) Campos: 1) Nombre_Completo, 2) ...
  #1 (permalink)  
Antiguo 12/09/2014, 08:19
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Unir dos tablas sin campos en común.

Buenos días.

Esperando te encuentres bien, estoy teniendo la siguiente situación, tengo dos tablas, con las siguientes informaciones:
Tabla 1 (RRHH)
Campos:
1) Nombre_Completo,
2) Posición_Nómina,
3) Departamento,
4) Fecha_Ingreso y
5) Fecha_salida
Tengo otra tabla llamada (Usuarios Aplicativo) en la cual contiene los campos (
1) Id_usuario (Este id lo genera la aplicación),
2) Nombre Completo (En este campo, puede ser que haya un nombre y un apellido, o un nombre y los dos apellidos o dos nombres y un apellido etc. No hay misma nomengratura)) y
3) perfil).
Nota: para el campo nombre Completo de la aplicación lo dividí en dos campos llamados 1er_nombre y 1er_apellido.
El cliente quiere que yo le agregue a los usuarios de la aplicación la posición y la fecha de salida.
He tratado de construir un query de la siguiente forma pero no lo logro conseguir.
Query= seleccioname los datos de las dos tablas donde el campo nombre_completo de la tabla RRHH contenga el 1er nombre y que el nombre_completo de la tabla RRHH contenga el 1er apellido.
Alguien pudiera darme una mano ya que no he podido lograrlo desde ayer.
Saludos.
  #2 (permalink)  
Antiguo 12/09/2014, 08:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Unir dos tablas sin campos en común.

podrias poner algunos datos de ejemplo y la estructura real con la que estas trabajando???(No pongas tengo estas columnas, pero hice este cambio nada mas pon el cambio)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 12/09/2014, 11:47
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Unir dos tablas sin campos en común.

https://db.tt/tfUwyuEb

https://db.tt/SvUpWlJV

https://db.tt/jpImoHoT

https://db.tt/VTgTfFyL

Aquí dejo la info.
  #4 (permalink)  
Antiguo 12/09/2014, 14:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Unir dos tablas sin campos en común.

cual manejador de bases de datos estas usando???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 12/09/2014, 16:24
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Unir dos tablas sin campos en común.

Ahora mismo ms Access pero cuando llegue a la casa are las pruebas en MySQL.
  #6 (permalink)  
Antiguo 12/09/2014, 17:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Unir dos tablas sin campos en común.

Access no es compatible con MySQL y ni siquiera tienen las mismas capacidades ni Muchas sintaxis comunes.
Creo que estas armando una gran confusión de cosas.
O usas uno o el otro...
En todo caso, si vas a usar MySQL estás posteando en el foro incorrecto. MySQL no es SQL Server.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 12/09/2014, 18:07
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Unir dos tablas sin campos en común.

Yo tengo también sql server. Yo lo que necesito es poder resolver esta inquietud. Para que me ayuden por favor
  #8 (permalink)  
Antiguo 12/09/2014, 18:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Unir dos tablas sin campos en común.

Movido a MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 12/09/2014, 18:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Unir dos tablas sin campos en común.

Vamos a partir de un par de aclaraciones:
1) Que SQL Server y MySQL sean ambos DBMS no implica que compartan todas las sintaxis, ni las capacidades. Esto hace que las soluciones pueden no ser compatibles entre ambos, por lo que no puedes tomar la diferencia a la ligera.
Las diferencias entre ambos DBMS son suficientes como para que se deban analizar con cuidado las cosas.

2) El planteo inicial que haces no tiene mucho sentido...
Si tienes dos tablas que no tienen campos en común, esto es, no tienen definida una relación de FK entre ambos, no puedes realizar una query con esa meta...
Así de simple.

Para hacer un JOIN entre dos tablas debe forzosamente haber algún tipo de relación, sea directa (FK) o transitiva (FK o valores de tablas intermedias).
Si no existe una forma de identificar unívocamente un registro dado de una tabla con uno o más de la otra tabla, simplemente estás proponiendo hacer algo imposible. Y en caso de intentarlo, obtendrías un producto cartesiano, lo que estaría mal.

Ahora bien, habiendo entendido eso, según dices tienes etas tablas:
Cita:
RRHH(Nombre_Completo, Posición_Nómina, Departamento, Fecha_Ingreso, Fecha_salida)
Usuarios_Aplicativo(Id_usuario, Nombre_Completo, perfil)
Si esos datos son todos los que están en esas tablas, entonces no sirven, porque un nombre, por más completo que sea, no es un atributo que sea fiable. Para que lo fuese en la primera tabla el campo "Nombre_Completo" debería ser UNIQUE.... y no creo que lo sea.
Como mínimo deberías identificar los usuarios siempre con el mismo identificador, que pareciera ser "id_usuario".

Básicamente, tienes que corregir una base de datos defectuosa, y sin hacerlo sólo tendrás dolores de cabeza para lograr consultas mínimamente seguras.

¿Se entiende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 12/09/2014, 19:09
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Unir dos tablas sin campos en común.

Entiendo a la perfección y como lo había dicho anteriormente había intentado hacerlo desde ayer y no tuve mas remedio que publicar mi duda. Gracias por tu excelente explicación.
  #11 (permalink)  
Antiguo 13/09/2014, 16:33
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Unir dos tablas sin campos en común.

Bueno pude lograr lo que queria

Código SQL:
Ver original
  1. SELECT * FROM tabla1 AS t1
  2. WHERE EXISTS (SELECT nombre, apellido FROM tabla2 AS t2 WHERE t1.nombre_completo LIKE '*'+ t2.nombre +'*'  AND t1.nombre_completo LIKE '*'+ t2.apellido +'*' ).
  #12 (permalink)  
Antiguo 13/09/2014, 18:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Unir dos tablas sin campos en común.

Genial, pero eso en MySQL te dará un error de sintaxis...
Y creo que en la mayoría de los DBMS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 13/09/2014, 18:29
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Unir dos tablas sin campos en común.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Genial, pero eso en MySQL te dará un error de sintaxis...
Y creo que en la mayoría de los DBMS.
Eso es correcto me dará un error ya que en la mayoría de DBMS en vez de utilizar el * se utiliza el %. Pero probé dicho código en vez de * utilice el % y me funciono en MySQL.
  #14 (permalink)  
Antiguo 14/09/2014, 14:21
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Al actualizar un registro sale "La operacion debe ser una consulta actualizable"

Buenas tardes.

Estoy utilizando MS-Access y tengo dos tablas

Tabla RRHH
esta es la estructura
id Autonumerico
Nombre_Completo texto
Posicion texto
Departamento Texto
Nombre Texto
Apellido Texto
Id_app Texto


Tabla Aplication
Id autonumerico
Nombre_Apli texto
Nombre texto
Apellido texto
Id_app texto



Si realizo esta consulta


Código MySQL:
Ver original
  1. FROM RRHH AS t1
  2. WHERE (((Exists (SELECT t2.Nombre
  3.      FROM Aplication as t2
  4.      WHERE t1.Nombre_Completo like '*'+t2.Nombre+'*' and t1.Nombre_Completo like '*'+t2.Apellido+'*'))));

Me funciona de maravilla.

Lo que hace el codigo anterior es buscarme en la tabla RRHH todos los registros donde el campo Nombre_Completo exista lo que está en el campo Nombre de la tabla aplication y donde el campo Nombre_Completo exista lo que está en el campo apellido.


Sin embargo lo que necesito es actualizar la tabla de RRHH y donde se cumpla que el campo Nombre_Completo exista lo que está en el campo Nombre de la tabla aplication y donde el campo Nombre_Completo exista lo que está en el campo apellido entonces actualizame el campo Id_app de la tabla RRHH con el registro que esta en la tabla aplication.

Intento utilizar este query
Código MySQL:
Ver original
  1. UPDATE RRHH AS t1 SET t1.Id_app = (SELECT t2.Id_app
  2.      FROM Aplication as t2
  3.      WHERE t1.Nombre_Completo like '*'+t2.Nombre+'*' and t1.Nombre_Completo like '*'+t2.Apellido+'*');

Pero al final sale La operacion debe ser una consulta actualizable

Realicé en Mysql este query y me funciona a la perfección
Código MySQL:
Ver original
  1. UPDATE RRHH AS t1 SET t1.Id_app = (SELECT t2.Id_app
  2.      FROM Aplication as t2
  3.      WHERE t1.Nombre_Completo like concat('%',t2.Nombre,'%') and t1.Nombre_Completo like concat('%',t2.Apellido,'%'))

Sin embargo necesito hacerlo en Access esta consulta porque en el trabajo solo están usando Access y no permiten instalar otro dbms.

Saludos.

Última edición por jeremiselxi; 14/09/2014 a las 14:41
  #15 (permalink)  
Antiguo 14/09/2014, 14:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Unir dos tablas sin campos en común.

@jeremiselxi: Por favor, recuerda que está prohibido abrir más de un thread para un mismo tema (PDU 2.4).
El problema lo planteaste en dos threads diferentes, y ahora estás abriendo un tercero. Lo que corresponde es solicitar que se MUEVA EL THREAD A OTRO FORO, para continuarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 14/09/2014, 19:24
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 15 años, 7 meses
Puntos: 22
Respuesta: Unir dos tablas sin campos en común.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Genial, pero eso en MySQL te dará un error de sintaxis...
Y creo que en la mayoría de los DBMS.
Eso es correcto me dará un error ya que en la mayoría de DBMS en vez de utilizar el * se utiliza el %. Pero probé dicho código en vez de * utilice el % y me funciono en MySQL.

Entiendo. Lo que entendí fue que como di como concluido el tema debía abrir otro pero no volverá a pasar.

Podrías ayudarme con esto de access???
  #17 (permalink)  
Antiguo 29/09/2014, 11:00
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Unir dos tablas sin campos en común.

@jeremiselxi estas arrastrando un problema de diseño, es mucho mas simple modificar las tablas que enloquecerte con las consultas.

Lo que debes hacer, es en la tabla usuarios, agregar un campo que sea "id_rrhh" de esta forma puedes saber a que recurso humano corresponde cada usuario.
Si un usuario puede corresponder a varios rrhh debes crear una tabla auxiliar llamada "usuario_rrhh" con los campos "usuario_id", "rrhh_id" y hacer la relación.

Lo que estas haciendo es sumamente ambiguo.


De todas formas, (ESTAS AVISADO DE QUE ESTO TE VA A TRAER PROBLEMAS A INMEDIATO, CORTO Y LARGO PLAZO), si insistes en inventar una relacion donde no la hay, las relaciones deben ser creadas en el FROM no en el WHERE.

En tu primer pregunta seria algo asi:
Código MySQL:
Ver original
  1.     RRHH t1
  2.     INNER JOIN Usuarios_Aplicativo t2
  3.         ON (t1.Nombre_Completo LIKE '%'+t2.Nombre+'%' AND t1.Nombre_Completo LIKE '%'+t2.Apellido+'%')

Ahora bien, siguiendo ese criterio vamos a los updates:
Código MySQL:
Ver original
  1.     RRHH t1
  2.     INNER JOIN Aplication t2
  3.         ON (t1.Nombre_Completo LIKE '%'+t2.Nombre+'%' AND t1.Nombre_Completo LIKE '%'+t2.Apellido+'%')
  4. SET t1.Id_app = t2.Id_app;

Asi se arman las relaciones, pero esta muy mal (o al menos deberia evitarse a menos que no halla otra forma) armar una relacion con operadores como LIKE en base a expreciones regulares ya que eso volvera muy lenta a la base de datos con un volumen de datos grandes.

Lo mejor es lo que te sugirio @gnzsoloyo, armar relaciones de FK explicitas.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Etiquetas: campos, mysql, operacion, query, registro, siguiente, sql-server, tabla, tablas
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 11:29.