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

Consulta 2 tablas distintas mysql

Estas en el tema de Consulta 2 tablas distintas mysql en el foro de Mysql en Foros del Web. Buenas amigos, me estoy volviendo loco con un problema en un SELECT: Resulta que tengo 2 tablas distintas: album_1 album_2 Dentro de cada tabla hay ...
  #1 (permalink)  
Antiguo 01/02/2012, 02:38
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
De acuerdo Consulta 2 tablas distintas mysql

Buenas amigos,

me estoy volviendo loco con un problema en un SELECT:

Resulta que tengo 2 tablas distintas:

album_1

album_2



Dentro de cada tabla hay multiples filas pero todas ellas tienen un campo en comun:

votos


Pues bien me gustaria hacer una consulta en la que se comprobasen todas las filas de cada tabla, y me sacase las tres que mas votos tienen.

Lo estoy haciendo asi, pero nada, no me sale....

Código PHP:
Ver original
  1. $resultado=mysql_query("SELECT album_1.votos, album_2.votos FROM album_1, album_2 ORDER BY votos DESC LIMIT 3");
  2. while ($array = mysql_fetch_array($resultado) ) {
  3. $portada = $array[portada];
  4. echo "<img src='$portada'/>";
  5. echo "<br/>";

También he probado asi y nada...

Código PHP:
Ver original
  1. $resultado=mysql_query("SELECT * FROM album_1, album_2 ORDER BY votos DESC LIMIT 3");
  2. while ($array = mysql_fetch_array($resultado) ) {
  3. $portada = $array[portada];
  4. echo "<img src='$portada'/>";
  5. echo "<br/>";

y tambien:

Código PHP:
Ver original
  1. $resultado=mysql_query("SELECT * FROM album_1 JOIN album_2 ORDER BY votos DESC LIMIT 3");
  2. while ($array = mysql_fetch_array($resultado) ) {
  3. $portada = $array[portada];
  4. echo "<img src='$portada'/>";
  5. echo "<br/>";


Ayuuuuuuuuuuuuuuuuuuuuudaaaaaaa!
Gracias.
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #2 (permalink)  
Antiguo 01/02/2012, 02:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta 2 tablas distintas mysql

Falta info pero una forma seria esta

Código MySQL:
Ver original
  1. SELECT * FROM album_1
  2. SELECT * FROM album_2

Suponiendo que las dos tablas tienen los mismos campos, si no es asi no funcionara cons los asderiscos *, substituyelos por una lista de campos igual para las dos tablas...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 01/02/2012, 02:55
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Consulta 2 tablas distintas mysql

Hola,
efectivamente las tablas tienen los mismos campos, he probado esto

Código PHP:
Ver original
  1. $resultado=mysql_query("SELECT * FROM SELECT * FROM album_1 UNION ALL SELECT * FROM album_2 ORDER BY votos DESC LIMIT 3;");
  2. while ($array = mysql_fetch_array($resultado) ) {
  3. $portada = $array[portada];
  4. echo "<img src='$portada'/>";
  5. echo "<br/>";

pero no me sale... :(
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #4 (permalink)  
Antiguo 01/02/2012, 03:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta 2 tablas distintas mysql

SELECT * FROM SELECT * FROM album_1 UNION ALL SELECT * FROM album_2 ORDER BY votos DESC LIMIT 3;

Ejecuta la query directamente en MySql y mira si da los datos si los da el problema lo tienes en php, si no los da dime que error te da....

Normalmente no uso los asdericos no estoy seguro si pueden entrar en conflicto con union...

Substituyelos por la lista de campos separados por comas.... tambien puede ser un tema de alias....

SELECT portada,votos FROM (SELECT a1.portada,a1.votos FROM album_1 a1 UNION ALL SELECT a2.portada,a2.votos FROM album_2 a2) ORDER BY votos DESC LIMIT 3;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 01/02/2012 a las 03:10
  #5 (permalink)  
Antiguo 01/02/2012, 03:14
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Consulta 2 tablas distintas mysql

Buenas le he quitado los asteriscos y le he puesto todos los campos separados por comas y al ejecutarla directamente en MYSQL me sale:

#1267 - Illegal mix of collations (ucs2_spanish_ci,IMPLICIT) and (utf8_spanish_ci,IMPLICIT) for operation 'UNION'
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #6 (permalink)  
Antiguo 01/02/2012, 03:21
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Consulta 2 tablas distintas mysql

Ya he arreglado lo de UCS2_SPANISH pero ahora me sale:

#1271 - Illegal mix of collations for operation 'UNION'
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #7 (permalink)  
Antiguo 01/02/2012, 03:29
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta 2 tablas distintas mysql

Illegal mix of collations

los collations tienen que ver con la codificacion de los campos. La definicion de las tabla es distinta deberías igualarlas....

Compara los CREATE de las tablas.... ejecuta show create table y comparalos. (en ingles pero lo explican aqui)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 01/02/2012, 03:32
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Consulta 2 tablas distintas mysql

asi me los muestra bien en la consulta directa:

SELECT votos FROM album_1 UNION ALL SELECT votos FROM album_2 ORDER BY votos DESC LIMIT 3

pero en el php no...
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #9 (permalink)  
Antiguo 01/02/2012, 03:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta 2 tablas distintas mysql

Cita:
Iniciado por protoameeba Ver Mensaje
asi me los muestra bien en la consulta directa:

SELECT votos FROM album_1 UNION ALL SELECT votos FROM album_2 ORDER BY votos DESC LIMIT 3

pero en el php no...
Para que order by se respete en un union debes hacer lo como te lo he dado yo...

Ademas has quitado portada que es elcampo donde debes tener problemas con el charset, votos es numérico y en ese seguro que no tienes problemas de caracteres....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #10 (permalink)  
Antiguo 01/02/2012, 03:40
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Consulta 2 tablas distintas mysql

Es que si pongo esto:


SELECT votos FROM SELECT votos FROM album_1 UNION ALL SELECT votos FROM album_2 ORDER BY votos DESC LIMIT 3


me da este error:


#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT votos FROM album_1 UNION ALL SELECT votos FROM album_2 ORDER BY votos ' at line 1
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #11 (permalink)  
Antiguo 01/02/2012, 03:42
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Consulta 2 tablas distintas mysql

y lo mismo para :

SELECT * FROM SELECT * FROM album_1 UNION ALL SELECT * FROM album_2 ORDER BY votos DESC LIMIT 3

o para

SELECT * FROM SELECT votos FROM album_1 UNION ALL SELECT votos FROM album_2 ORDER BY votos DESC LIMIT 3
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #12 (permalink)  
Antiguo 01/02/2012, 05:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta 2 tablas distintas mysql

Código MySQL:
Ver original
  1. SELECT datos.portada,
  2.              datos.votos
  3. FROM (SELECT a1.portada,
  4.                         a1.votos
  5.            FROM album_1 a1
  6.            UNION ALL
  7.            SELECT a2.portada,
  8.                         a2.votos
  9.            FROM album_2 a2) as datos
  10. ORDER BY datos.votos DESC LIMIT 3;

Tiene que ser un tema de alias, si has solucionado lo del collation.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #13 (permalink)  
Antiguo 01/02/2012, 15:19
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Consulta 2 tablas distintas mysql

Ya lo he arreglado compañero muchas gracias por tu ayuda! te mando puntos de Karma!!! thanks!!!!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....

Etiquetas: distintas, join, query, select, sql, tabla, tablas, campos
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 22:10.