Foros del Web » Programando para Internet » PHP »

Ayuda con consultas mysql

Estas en el tema de Ayuda con consultas mysql en el foro de PHP en Foros del Web. Hola. De php/mysql no se casi nada, por eso os dejo este mensaje a ver si me podéis ayudar: Tengo estos dos códigos PHP: Código ...
  #1 (permalink)  
Antiguo 14/04/2006, 13:06
 
Fecha de Ingreso: mayo-2005
Mensajes: 55
Antigüedad: 12 años, 6 meses
Puntos: 0
Ayuda con consultas mysql

Hola. De php/mysql no se casi nada, por eso os dejo este mensaje a ver si me podéis ayudar:
Tengo estos dos códigos PHP:

Código PHP:
<? $link mysql_connect("$dbhost","$dbuser","$dbpass");
$query "SELECT * from datosusuario order by descargas DESC limit 10";
$result =  mysql_db_query ($dbname$query$link);
while (
$row mysql_fetch_array ($result)) {        
print 
"<tr><td align=\"left\" height=\"5\" nowrap bgcolor=\"FFFFFF\">";
print 
"&nbsp;&nbsp;-&nbsp;<A class=pn-normal title=\"$row[nombre] [$row[categoria]]\"  ";   
if (
strlen($row[nombre]) > 13) {
$row[nombre] = substr($row[nombre],0,13)."..."; }
print 
"HREF=\" usuarios.php?sec=datosusuario&id=$row[id]\">$row[nombre]</td></tr>"; }
?>

<? $link mysql_connect("$dbhost","$dbuser","$dbpass");
$query "SELECT * from datosupersusuario order by descargas DESC limit 10";
$result =  mysql_db_query ($dbname$query$link);
while (
$row mysql_fetch_array ($result)) {        
print 
"<tr><td align=\"left\" height=\"5\" nowrap bgcolor=\"FFFFFF\">";
print 
"&nbsp;&nbsp;-&nbsp;<A class=pn-normal title=\"$row[nombre] [$row[categoria]]\"  ";   
if (
strlen($row[nombre]) > 13) {
$row[nombre] = substr($row[nombre],0,13)."..."; }
print 
"HREF=\"usuarios.php?sec= datosupersusuario&id=$row[id]\">$row[nombre]</td></tr>"; }
?>
La primera consulta muestra los usuarios que mas archivos han descargado.
La segunda consulta muestra los superusuarios que mas archivos han descargado.

Me gustaría juntar estas dos consultas, de manera que mostrara los 10 usuarios/superusuarios que más han descargado. Y al poder ser, alguna señal que diferencie los usuarios de los superusuarios, como por ejemplo el color del texto.
  #2 (permalink)  
Antiguo 14/04/2006, 16:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 55
Antigüedad: 12 años, 6 meses
Puntos: 0
¿Alguien me ayuda?
  #3 (permalink)  
Antiguo 14/04/2006, 17:34
 
Fecha de Ingreso: junio-2002
Mensajes: 751
Antigüedad: 15 años, 6 meses
Puntos: 22
¿quieres obtener 10 usuarios y 10 superusuarios (en total 20 resultados) o solo 10 resultados (los 10 que más descargan ya sean usuarios o superusuarios)?
  #4 (permalink)  
Antiguo 14/04/2006, 19:25
 
Fecha de Ingreso: mayo-2005
Mensajes: 55
Antigüedad: 12 años, 6 meses
Puntos: 0
Los 10 que más descargan, ya sean usuarios o superusuarios
  #5 (permalink)  
Antiguo 15/04/2006, 05:40
 
Fecha de Ingreso: junio-2002
Mensajes: 751
Antigüedad: 15 años, 6 meses
Puntos: 22
Bueno, no sé si estaré complicando las cosas, pero creo que para poder realizar esa consulta necesitas tener en ambas tablas campos comunes que permitan relacionarlas. A lo mejor hay un método más simple pero ahora mismo no se me ocurre.

Creo que se podría hacer reemplazando las tablas que tienes (antes deberías hacer copia seguridad, si intentas esto) por otra/s:


A) Todo en una tabla:
tabla datosusuario:
id_usuario (id único tanto para usuarios como superusuarios)
tipo_usuario (usuario,superusuario)
descargas
etc...

Consultas:
Cita:
// 10 usuarios
SELECT * FROM datosusuario WHERE tipo_usuario='usuario' order by descargas DESC limit 10

// 10 superusuarios
SELECT * FROM datosusuario WHERE tipo_usuario='superusuario' order by descargas DESC limit 10

// 10 usuarios/superusuarios
SELECT * FROM datosusuarios order by descargas DESC limit 10
B)
tabla usuarios:
id_usuario
id_tipo_usuario
etc..

tabla tipo_usuario:
id_tipo_usuario (1,2....n)
nombre_tipo_usuario (usuario, superusuario...)

tabla descargas:
id_usuario
descargas

Consulta:
Cita:
// 10 usuarios
SELECT *
FROM usuarios, tipo_usuario, descargas
WHERE descargas.id_usuario=usuarios.id_usuario
AND usuarios.id_tipo_usuario = tipo_usuario.id_tipo_usuario
AND nombre_tipo_usuario = 'usuario'
order by descargas DESC limit 10

// 10 superusuarios
SELECT *
FROM usuarios, tipo_usuario, descargas
WHERE descargas.id_usuario=usuarios.id_usuario
AND usuarios.id_tipo_usuario = tipo_usuario.id_tipo_usuario
AND nombre_tipo_usuario = 'superusuario'
order by descargas DESC limit 10

// 10 usuarios/superusuarios
SELECT *
FROM usuarios, tipo_usuario, descargas
WHERE descargas.id_usuario=usuarios.id_usuario
AND usuarios.id_tipo_usuario = tipo_usuario.id_tipo_usuario
order by descargas DESC limit 10
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 11:15.