Mientras más aprendo, más me doy cuenta de lo ignorante que soy.

Duda con MySQL

2008-09-03 14:21:22-05

Problemas

Hola, tengo una pregunta sobre MySQL, ojalá algún mononeuron me pueda aclarar un poco al respecto.

 

Supongamos que tengo N tablas en MySQL, en las cuales hay M campos en común, cual sería la consulta para extraer todos los campos de todas las tablas?

Ejemplo N=4 y M=2

Tablas:

datos(nombre, apellido, sexo, edad, curp)
domicilio (nombre, apellido, calle, numero, cp, ciudad)
dinero (nombre, apellido, ingresos, gastos, ahorro)
puesto (nombre, apellido, empresa, puesto, antiguedad)

Quiero toda la información, excepto claro nombre y apellido, que son las condiciones.

Como sería en general para M y N?

De antemano, gracias!!

--------------------------------------------------------------------------------------------------------------------------------------------

U P D A T E !

Gracias por sus respuestas!
Omití algo -_-, que es el verdadero problema quizá...
Puede darse que una persona tenga mas de un domicilio y más de un puesto, en general el ejemplo no está muy claro, pero el punto es que en las tablas haya más de un registro parael mismo nombre y apellido :-S

Entonces para generar un informe con tooda la información disponible de todas las tablas, es posible hacerse con una sola consulta?

Digo, por ahorrarse el hacer una por cada tabla y por otro lado, las tablas no tienen texto explicito, sino relaciones a otras tablas jajaja, que cosas 8-) por eso la pregunta, porque solo con eso va a ser un desmadre de condiciones :-S


datos(nombre, apellido, id_sexo, edad, curp)
domicilio (nombre, apellido, calle, numero, cp, id_ciudad)
dinero (nombre, apellido, id_ingresos, gastos, ahorro)
puesto (nombre, apellido, id_empresa, id_puesto, id_antiguedad)

Gracias!

Por cierto, no tengo claves primarias, porque esto es una migración de access a MySQL y la persona que hizo el desmadre, ahem, el trabajo anterior, no pensó en esos "detalles" xD

Permalink: http://www.mononeurona.org/users/entry/der_teufel/1533


Comments Comentblogs:
1.- thot thot wrote:

La primera solución que se me ocurrió, y que dudo que sea la más eficiente:

select <camposbase(nombre y apellido)>, <camposdiferentestabla1>, <camposdiferentestabla2> ... camposdiferentestablan from <todaslastablas> where tabla1.nombre = tabla2.nombre and tabla1.apellido=tabla2.apellido and tabla1.nombre=tabla3.nombre and tabla1.apellido=tabla3.apellido and ... tabla1.nombre=tablan.nombre and tabla1.nombre=tablan.apellido

Y ya checando con más calma, posiblemente sea útil usar natural join:

SELECT * FROM t1 NATURAL JOIN t2 NATURAL JOIN t3 .....;

Eso empataría los campos comunes, y agregaría los que son diferentes.

Espero te sirva.


2008-09-03 16:38:24-05
2.- rnstux rnstux wrote:

:S ...

Base de datos: Colección de datos que estan I-N-T--E-R-R-E-L-A-C-I-O-N-A-D-O-S y ordenados en forma INTEGRADA y compartida en donde se evita cualquier R-E-D-U-N-D-A-N-C-I-A.

Normalización: Proceso de refinamiento de la estructura de la base de datos para mejorar la integridad y velocidad de acceso a los datos.

Bien, ¿Y tus claves primarias?.Pero vamos a ver se puede hacer algo...

Creamos una tabla con el listado de todos los campos..Para que no tengas que hacer está pinche consulta a cada rato.


Supongo que tu criterio de busqueda es: Nombre y Apellido ¿Sabes la cántidad de personas que tienen el mismo nombre?

CREATE TABLE temporal
(
nombre varchar(XX);
apellido varchar(XX);
....
...
--Aquí van todos los campos de todas las tablas.
--acuerdate del orden..y respeta las contraints ( Si es que existen :P jaja)


);


ahora insertamos todos los campos.

INSERT INTO temporal SELECT datos.nombre,datos.apellido, sexo, edad, curp, calle, numero, cp, ciudad....... FROM datos, domicilio, dinero, puesto WHERE datos.nombre = domicilio.nombre AND dinero.nombre =puesto.nombre AND datos.apellido=domicilio.apellido ......etc etc.

Y despues tu consulta en la tabla temporal queda así: SELECT * FROM temporal WHERE nombre = 'der_teufel' AND apellidos = 'xxxxxx';

Claro cuando se actualizan las tablas..ya no sirve.asi que tendrias que escribir siempre una pinch consultisimaaaaa...:P

Bueno, fue lo único que se me ocurrio para arreglar ese desmadre :D



2008-09-03 19:03:15-05
3.- rnstux rnstux wrote:

Sigue siendo una desmadre aun asi, no tener PK :S es pecado..Pero mi solucion sigue siendo la misma

SELECT datos.nombre,datos.apellido, sexo, edad, curp, calle, numero, cp, ciudad....... FROM datos, domicilio, dinero, puesto WHERE datos.nombre = "der_teufel" AND dinero.nombre ="der_teufel" AND datos.apellido="apellidoXX"....y sigues para los demas campos.



2008-09-05 20:20:13-05

New Comentblog

Captcha



Login



Remember me:
der_teufel
Horacio Contreras es pasante de la carrera de Física en la facultad de Ciencias de la UNAM, México.
Actualmente es ayudante (Profesor adjunto) de la asignatura Computación para alumnos de Física en primer semestre, donde difunde entre sus alumnos el uso de GNU/Linux y el software libre en general. Trabaja también en la Subdirección de Ordenamiento Territorial, Delegación Tlalpan. Su página actual es http://rmf.fciencias.unam.mx/demonios
ciencias demonios física linux hacking
Powered by:
Despabilando la MonoNeurona.org
Livechat

<-Nombre
chilicuil wrote:
te llego el serial para crossover?
3 weeks, 5 days ago

¿Qué estuve haciendo?
Por que tardaste tanto, netstack?
3 weeks, 3 days ago
Que pendejo Calderón, lee de nuevo el mismo papél y si, mouriño tb es santo... -_-
3 weeks, 5 days ago
Yo estoy viendo canal 11, el pelón está repitiendo el discurso, ni improvisa :-s
3 weeks, 5 days ago
madres! como ven lo del mouriño? y yo ni me acordaba de la elección gringa :-S
3 weeks, 5 days ago
que saben del amero? que opinan?
3 weeks, 5 days ago
vientos Thot, ya te agregué :-)
3 weeks, 6 days ago
moverse, en cuanto al lugar de trabajo? Sí, pasame tu gmail o messenger, te cuento+
3 weeks, 6 days ago
Sí alguien se unteresa, por favor contacteme! :-)
3 weeks, 6 days ago
Ahora sí voy a necesitar a algún mononeurón desempleado, conocimientos PHP MySQL
3 weeks, 6 days ago
sí, sí, me refería a si alguien sabía de un torrent o algo, con la ISO :-P
on 3/11/08
Galerias
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2008.