Mientras más aprendo, más me doy cuenta de lo ignorante que soy.
"Las palabras mueven, los ejemplos arrastran..." Desconocido

Duda con MySQL

2008-09-03 14:21:22-05                  Esta entrada ha sido vista 126 veces.

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/entries/view/Teufel/1533


Comments Commentblogs:
1.- thot wrote:

La primera solución que se me ocurrió, y que dudo que sea la más eficiente:<br />
<br />
select &lt;camposbase&#40;nombre y apellido&#41;&gt;, &lt;camposdiferentestabla1&gt;, &lt;camposdiferentestabla2&gt; ... camposdiferentestablan from &lt;todaslastablas&gt; 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<br />
<br />
Y ya checando con más calma, posiblemente sea útil usar natural join:<br />
<br />
SELECT * FROM t1 NATURAL JOIN t2 NATURAL JOIN t3 .....; <br />
<br />
Eso empataría los campos comunes, y agregaría los que son diferentes.<br />
<br />
Espero te sirva.<br />


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

:S ...<br />
<br />
Base de datos: Colección de datos que estan I&#45;N&#45;T&#45;&#45;E&#45;R&#45;R&#45;E&#45;L&#45;A&#45;C&#45;I&#45;O&#45;N&#45;A&#45;D&#45;O&#45;S y ordenados en forma INTEGRADA y compartida en donde se evita cualquier R&#45;E&#45;D&#45;U&#45;N&#45;D&#45;A&#45;N&#45;C&#45;I&#45;A.<br />
<br />
Normalización: Proceso de refinamiento de la estructura de la base de datos para mejorar la integridad y velocidad de acceso a los datos.<br />
<br />
Bien, ¿Y tus claves primarias?.Pero vamos a ver se puede hacer algo...<br />
<br />
Creamos una tabla con el listado de todos los campos..Para que no tengas que hacer está pinche consulta a cada rato.<br />
<br />
<br />
Supongo que tu criterio de busqueda es: Nombre y Apellido ¿Sabes la cántidad de personas que tienen el mismo nombre?<br />
<br />
CREATE TABLE temporal<br />
&#40;<br />
nombre varchar&#40;XX&#41;;<br />
apellido varchar&#40;XX&#41;;<br />
....<br />
...<br />
&#45;&#45;Aquí van todos los campos de todas las tablas.<br />
&#45;&#45;acuerdate del orden..y respeta las contraints &#40; Si es que existen :P jaja&#41;<br />
<br />
<br />
&#41;;<br />
<br />
<br />
ahora insertamos todos los campos.<br />
<br />
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.<br />
<br />
Y despues tu consulta en la tabla temporal queda así: SELECT * FROM temporal WHERE nombre = &#39;der_teufel&#39; AND apellidos = &#39;xxxxxx&#39;;<br />
<br />
Claro cuando se actualizan las tablas..ya no sirve.asi que tendrias que escribir siempre una pinch consultisimaaaaa...:P <br />
<br />
Bueno, fue lo único que se me ocurrio para arreglar ese desmadre :D <br />
<br />


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

Sigue siendo una desmadre aun asi, no tener PK :S es pecado..Pero mi solucion sigue siendo la misma<br />
<br />
SELECT datos.nombre,datos.apellido, sexo, edad, curp, calle, numero, cp, ciudad....... FROM datos, domicilio, dinero, puesto WHERE datos.nombre = &quot;der_teufel&quot; AND dinero.nombre =&quot;der_teufel&quot; AND datos.apellido=&quot;apellidoXX&quot;....y sigues para los demas campos.<br />
<br />


2008-09-05 20:20:13-05
New Commentblog
CAPTCHA Image




Join us!
Forgot your password?
This blog has been visited
3,333 times
Teufel
Horacio Contreras estudió Física en la facultad de Ciencias de la UNAM, México.
Actualmente trabaja para el Gigante Azul como Fiel Technical Support Specialist, System X, el área de servidores x86.

Además da clase de computación para los alumnos de nuevo ingreso a la carrera de Física, donde difunde el Software Libre y uso de GNU/Linux como Sistema Operativo.

Visita su página! http://rmf.fciencias.unam.mx/demonios
Powered by
Despabilando la MonoNeurona.org
Livechat
<-Nombre

vendaval wrote:
Que bueno que ya se acabo el rollo del BAM
on 13/8/09

chilicuil wrote:
te llego el serial para crossover?
on 4/11/08


Yeah, me gusta el nuevo estilo de la MN :-D
on 30/3/11
Nooo, pero dan ganas jejeje
on 11/1/11
Yo conocí MN buscando información sobre el mirror de debian, nisamox, en la facultad de ciencias, donde estudié n_n
on 21/12/10
Estaría chido que las news tuvieran los botones de compartir en twitter, facebook y demás. Además traería mas visitantes a MN desde las redes sociales :-D
on 15/9/10
Hoy a las 19:00 en el Starbuck del WTC. ¡Saludos!
on 1/6/10
Puedes mañana en la tarde-noche? como entre 6 y 8?
on 31/5/10
Ninguno me queda cercazzz, pero podemos vernos en uno de insurgentes, como ves
on 31/5/10
Es mas que mapas, pero también estaría chido integrarlos... aunque los de Google tienen relativamente baja calidad
on 26/5/10
Ah caray, Asarch, yo hice la misma petición hace un buen tiempo(SPAM!, COF, COF) pero parece que vedrisha es la admin, o la novia xD
on 21/5/10
@Aarkerio, te mando una wave con la info, si alguien mas se apunta lo agregamos
on 21/5/10
Mis Albums
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2011.