Foros del Web » Programando para Internet » PHP »

query = "select ...."; de dos tablas diferentes

Estas en el tema de query = "select ...."; de dos tablas diferentes en el foro de PHP en Foros del Web. lo que tengo es un sistema que me muestra la cantidad de usuarios registrados y sus datos en tablas lo hago con esta funcion Código ...
  #1 (permalink)  
Antiguo 26/05/2009, 11:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 52
Antigüedad: 15 años
Puntos: 0
Pregunta query = "select ...."; de dos tablas diferentes

lo que tengo es un sistema que me muestra la cantidad de usuarios registrados y sus datos en tablas lo hago con esta funcion

Código PHP:
// traemos listado de usuarios
$arrUsuarios = array();
$query "SELECT idUsuario, nombre, email, FROM `usuarios` ORDER BY idUsuario ASC";
$resultado mysql_query ($query$dbConn);
while ( 
$row mysql_fetch_assoc ($resultado)) {
    
array_push$arrUsuarios,$row );

y agrego la tabla con este codigo

Código PHP:
 <? foreach ($arrUsuarios as $usuario) { ?>
            <tr>
                <td class="even" style="padding:5px;"><? echo $usuario['idUsuario']; ?></td>
                <td style="padding:5px;"><? echo $usuario['usuario']; ?></td>
                <td style="padding:5px;"><? echo $usuario['nombre']; ?></td>
                <td style="padding:5px;"><a href="mailto:<? echo $usuario['email']; ?>"><? echo $usuario['email']; ?></a></td>
                            </tr>
         <? ?>
ahora bien de otra tabla llamada comentarios existe un idUsuario que registra cuantos comentarios ha enviado tal o cual usuario.

con este codigo puedo ver cuantos comentarios ha escrito cada usuario

Código PHP:
$request mysql_query("SELECT idUsuario, COUNT(*) AS countId FROM comentarios GROUP BY idUsuario ASC") or die(mysql_error());
    
$context mysql_fetch_array($request);
    echo 
$context['countId']; 

pero para que funcione por cada usuario necesito aprovechar el array de los usuarios e incluir esa info de esta manera en la tabla que se genera

<td style="padding:5px;"><? echo $usuario['countId']; ?></td>

la cuestion esque en este especifico lugar

Código PHP:
$query "SELECT idUsuario, nombre, email, FROM `usuarios` ORDER BY idUsuario ASC";
$resultado mysql_query ($query$dbConn); 
no se como incluir el select de la tabla comentarios o tal ves realizar otro query y agregarlo asi $resultado = mysql_query ($query, $dbConn); pero si hago esto me marca error.

como seria posible agregar el select completo de la tabla comentarios para que se ejecute con el array????

cualqueir ayuda me vendria de maravilla tengo ya algo de tiempo con todo este sistema y no logro dar en el clavo ya he probado varias maneras como union para llamar dos tablas pero nada ha funcionado.

AYUDA!!!!
  #2 (permalink)  
Antiguo 26/05/2009, 11:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: query = "select ...."; de dos tablas diferentes

para unir las dos tablas lo llamas en el mismo query

SELECT u.idUsuario, u.nombre, u.email, c.Comentario
FROM `usuarios` u, `tabla_comentario` c
WHERE u.idUsuario = c.idUsuario
ORDER BY u.idUsuario ASC
  #3 (permalink)  
Antiguo 26/05/2009, 11:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: query = "select ...."; de dos tablas diferentes

creo que dos tablas en un select es muy pesado.

mejor usa:

select id,name,mail from usuarios inner join comentario on (usuarios.iduser=comentario.iduser) order by iduser desc, name desc
  #4 (permalink)  
Antiguo 26/05/2009, 12:01
 
Fecha de Ingreso: mayo-2009
Mensajes: 52
Antigüedad: 15 años
Puntos: 0
Respuesta: query = "select ...."; de dos tablas diferentes

pues la cuestion es que el primer query hace esto ORDER BY idUsuario ASC y el segundo GROUP BY idUsuario y no se si se puedan poner juntas o tal vez cambiar el nombre del idUsuario en una de las dos tablas
  #5 (permalink)  
Antiguo 26/05/2009, 12:14
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: query = "select ...."; de dos tablas diferentes

Porque estas haciendo un group by en la segunda si la segunda es comentario?
  #6 (permalink)  
Antiguo 26/05/2009, 12:16
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: query = "select ...."; de dos tablas diferentes

para unir el iduser con el iduser de la otra consulta em imagino
  #7 (permalink)  
Antiguo 26/05/2009, 12:16
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: query = "select ...."; de dos tablas diferentes

Sigue este ejemplo a ver si te ayuda

select nombre_tabla1,
apellido_tabla1,
pueblo_tabla2,
ciudad_tabla2,
ilv.deuda,
ilv.ciclo
from tabla1,
tabla2,
(select key_tabla3 key,
deuda_tabla3 deuda,
ciclo_tabla3 ciclo
from tabla3
where ciclo_tabla3 = 'CICLO'
and deuda_tabla3 > 0) ilv
where key_tabla1 = key_tabla2
and ilv.key = key_tabla1;
  #8 (permalink)  
Antiguo 27/05/2009, 10:03
 
Fecha de Ingreso: mayo-2009
Mensajes: 52
Antigüedad: 15 años
Puntos: 0
Respuesta: query = "select ...."; de dos tablas diferentes

pues no nada parece funcionar..

no seria posible hacer los dos selects por separado y ejecutar las dos instrucciones de query en el mismo array??

porque la verdad he intentado todos esos ejemplos y muchos mas que he buscado en internet y nada parace funcionar
  #9 (permalink)  
Antiguo 27/05/2009, 10:27
 
Fecha de Ingreso: mayo-2009
Mensajes: 52
Antigüedad: 15 años
Puntos: 0
Respuesta: query = "select ...."; de dos tablas diferentes

es mas ya cambie el nombre de idUsuario a idUser de la tabla de comentarios pero sigue sin funcionar lo que yo necesito esque de la tabla de comentarios me de el numero de veces que aparece cada idUser en las filas para sacar el numero de comentariso que ha publicado cada uno y solo lo logro con esta consulta

Código PHP:
$request mysql_query("SELECT idUser, COUNT(*) AS countId FROM comentarios GROUP BY idUser ASC") or die(mysql_error());
    
$context mysql_fetch_array($request);
    echo 
$context['countId']; 
si lo pongo como en el ejemplo de mas arriba algo asi

Código PHP:
$query "SELECT u.idUsuario, u.nombre, u.usuario, u.email, u.edad, u.loca, c.idUser FROM `usuarios` u, `comentarios` c ORDER BY idUsuario ASC"
si funciona realiza la consulta y todo pero me publica cada usuario repetido el numero de veces de comentariso que haya totales es decir en lugar de decirme existen en total 4 comentarios dos lso ha publciado tal usuario y 2 talñ otro usuario me pone el usuario 1 4 veces y el usuario 2 otras 4 veces en la tabla y eso es lo que no quiero.

por eso la importancia de poder usar algo como esto:

$query = "SELECT u.idUsuario, u.nombre, u.usuario, u.email, u.edad, u.loca, c.idUser FROM `usuarios` u, `comentarios` c ORDER BY idUsuario ASC";

y poder agregarle que de la segunda tabla haga esto
SELECT idUser, COUNT(*) AS countId
y
GROUP BY idUser ASC

debe de ser posible no??
  #10 (permalink)  
Antiguo 27/05/2009, 10:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 52
Antigüedad: 15 años
Puntos: 0
Respuesta: query = "select ...."; de dos tablas diferentes

he logrado hacer que funcione de esta manera

Código PHP:
$arrUsers = array();
$query2 "SELECT c.idUser, COUNT(*) AS countId, u.idUsuario, u.nombre, u.usuario, u.email, u.edad, u.loca FROM `comentarios` c, `usuarios` u GROUP BY idUser ASC";
$resultado2 mysql_query ($query2$dbConn) or die(mysql_error());
while ( 
$row2 mysql_fetch_assoc ($resultado2)) {
    
array_push$arrUsers,$row2 );

el unico error que sucede esque me muestra en la tabla de countid dodne deberia marcar el numero de comentariso que ha publicaod un usuario pues si me lo marca pero me marca el doble por decir si un usuario ha publicado 5 comentarios y otro 3 cuando se ejecuta la consulta me muestra que el primero puso 10 y el segundo 6

alguna idea?
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 00:57.