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

No consigo listar bien de 2 tablas

Estas en el tema de No consigo listar bien de 2 tablas en el foro de Bases de Datos General en Foros del Web. Hola gente, soy nuevo en esto del php y tengo un problema que para mi es de imposible solución, aunque para vosotros seguro que es ...
  #1 (permalink)  
Antiguo 03/11/2008, 15:22
 
Fecha de Ingreso: noviembre-2008
Mensajes: 4
Antigüedad: 16 años
Puntos: 0
No consigo listar bien de 2 tablas

Hola gente, soy nuevo en esto del php y tengo un problema que para mi es de imposible solución, aunque para vosotros seguro que es una chorrada. Os pongo el ejemplo.....

Tengo la tabla A formada por
id
nombre

La tabla B es
id
apellido

Digamos que lo que quiero es obtener 5 resultados aleatorios que me muestren:

nombre y apellido
nombre y apellido
nombre y apellido
nombre y apellido
nombre y apellido

Yo he conseguido que me lo liste, pero lo hace mal, ya que me repite siempre el mismo nombre y me varia los apellidos,, y necesito que sean aleatorios los 2.

Espero vuestra ayuda y gracias.
  #2 (permalink)  
Antiguo 04/11/2008, 05:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: No consigo listar bien de 2 tablas

Lo que sí sería fácil es una solución mediante programación. Haces las dos consultas por separado y luego muestras los datos unidos siguiendo el orden en que fueron seleccionados. Eso sería lo mejor y más recomendable.
No sé si habría alguna solución con Store Procedures, pero yo no los manejo.
Si puedo ofrecerte mi experimento: a mí sólo se me ocurre que crees dos tablas temporales con los datos de la consulta limitada a 5 y ordenados al azar, pero con un primary key auto_increment que nos permita luego establecer la relación entre esas dos tablas temporales. Luego presentamos unidos mediante inner join por ese campo que he llamado indice.
Código sql:
Ver original
  1. DROP TABLE IF EXISTS tmp;
  2. CREATE TABLE tmp (indice INT (11) PRIMARY KEY AUTO_INCREMENT) engine = memory SELECT nombre FROM a ORDER BY rand() LIMIT 5;
  3. DROP TABLE IF EXISTS tmp2;
  4. CREATE TABLE tmp2 (indice INT (11) PRIMARY KEY AUTO_INCREMENT) engine = memory SELECT apellido FROM b ORDER BY rand() LIMIT 5;
  5. SELECT tmp.nombre, tmp2.apellido FROM tmp INNER JOIN tmp2 ON tmp.indice = tmp2.indice;

Pero el mismo resultado lo conseguirás con programación muy fácilmente.
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 14:19.