Foros del Web » Programando para Internet » PHP »

Mezclar tablas?

Estas en el tema de Mezclar tablas? en el foro de PHP en Foros del Web. Cómo podría mostrar dos tablas de una base de datos Mysql que tienen diferentes campos? Ejemplo: Tabla 1 -> nombres, apellidos, ciudad Tabla 2 -> ...
  #1 (permalink)  
Antiguo 21/07/2008, 13:05
RJD
 
Fecha de Ingreso: enero-2006
Mensajes: 64
Antigüedad: 18 años, 3 meses
Puntos: 0
Mezclar tablas?

Cómo podría mostrar dos tablas de una base de datos Mysql que tienen diferentes campos?

Ejemplo:
Tabla 1 -> nombres, apellidos, ciudad
Tabla 2 -> mote, país, ocupación

Y ordenarlo según mote y nombre, es decir que aparezcan mezcladas las dos tablas

Gracias!
  #2 (permalink)  
Antiguo 21/07/2008, 13:56
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mezclar tablas?

Deberías mirarte la parte de los "join" en un manual de MySQL.
Pero concretamente en tu caso el código sería algo así:
Código:
SELECT * FROM Tabla1 AS uno JOIN Tabla2 AS dos GROUP BY dos.mote,uno.nombre;
Puedes añadir asc o desc al final para ordenar la agrupación, también puedes ver distinct para no obtener repeticiones en la salida.
  #3 (permalink)  
Antiguo 21/07/2008, 19:04
RJD
 
Fecha de Ingreso: enero-2006
Mensajes: 64
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Mezclar tablas?

Muchas gracias,

pero entonces ahora, como hago para ordenar la informacion extraida de la BD. Cómo debería plantear el siguiente código? que hay mal?:

<? $result = mysql_query("SELECT * FROM Tabla1 AS uno JOIN Tabla2 AS dos GROUP BY dos.mote,uno.nombre ASC");
while($r=mysql_fetch_array($result))
{
$nombre = $r['nombre'];
$ocupacion = $r['ocupacion'];
$pais = $r['pais'];
...
...
etc, etc


Y después de eso, como puedo decir, si el que toca enseñar ahora es de la tabla 1, az esto:
- Nombre: $nombre
- Apellidos: $ apellidos
etc

Y si es de la tabla 2:
-Mote: $mote
-Ocupacion: $ocupacion
etc





No se si me explico correctamente, espero que sí.
Muchas gracias
  #4 (permalink)  
Antiguo 22/07/2008, 05:05
RJD
 
Fecha de Ingreso: enero-2006
Mensajes: 64
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Mezclar tablas?

Alguien me ayuda plis?
  #5 (permalink)  
Antiguo 22/07/2008, 05:35
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Mezclar tablas?

Creo que tienes que poner:

ORDER BY uno.nombre ASC
  #6 (permalink)  
Antiguo 22/07/2008, 05:36
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Mezclar tablas?

Es decir:

$result = mysql_query("SELECT * FROM Tabla1 AS uno JOIN Tabla2 AS dos GROUP BY dos.mote,uno.nombre ORDER BY uno.nombre ASC");

Si lo quieres ordenar por el nombre.
  #7 (permalink)  
Antiguo 22/07/2008, 06:05
RJD
 
Fecha de Ingreso: enero-2006
Mensajes: 64
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Mezclar tablas?

No se si me he explicado bien, lo que pretendo es hacer algo así, pero no se como:

Código PHP:
<? $result mysql_query("SELECT * FROM Tabla1 AS uno JOIN Tabla2 AS dos GROUP BY dos.mote,uno.nombre ASC");
while(
$r=mysql_fetch_array($result))
{
$nombre $r['nombre'];
$ocupacion $r['ocupacion'];
$pais $r['pais'];
...
...
etcetc


Y después de eso
como puedo decirsi el que toca enseñar ahora es de la tabla 1az esto:
Nombre$nombre
Apellidos: $ apellidos
etc

Y si es de la tabla 2
:
-
Mote$mote
-Ocupacion$ocupacion
etc
  #8 (permalink)  
Antiguo 22/07/2008, 12:52
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mezclar tablas?

Creo que no has acabado de entender el resultado de esa consulta: el resultado son filas ordenadas por mote - en caso de empate se mira el nombre - en las cuales hay TODOS los campos de esa "prioridad" de la Tabla1 y Tabla2, así que en tu $r tienes tanto $r['nombres'] como $r['mote'], así como los demás.
Sólo coge el que te interese en cada momento, sea de Tabla1 o Tabla2, ya que en $r tienes a ambos con los nombres de tu BD. En la siguiente pasada del bucle vuelves a tener lo mismo, sólo que con el siguiente orden de prioridad, es decir, el siguiente resultado de la ordenación por mote y nombre.

De todas formas, yo sólo puse una consulta que creo que es lo que buscabas, si no lo has comprobado compruebalo en una consola MySQL insertando esa consulta directamente y viendo el resultado, y en todo caso si no entiendes estos temas de consultas que vas a usar, es mejor que mires en el manual y lo comprendas, que si no puedes tener algún problema después.
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 03:46.