Ver Mensaje Individual
  #9 (permalink)  
Antiguo 29/10/2008, 14:19
usuario1000
 
Fecha de Ingreso: septiembre-2008
Mensajes: 53
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Recorer Matriz multimensional asociativa

Bueno gracias por responder te comento mas o menos. Yo recien empiezo asi tengo dudas.

La estructura es esta:

Tabla e: (empresas)
ID --> Primary Key
nombre

Tabla u: (usuarios)
ID --> Primary Key
nombre

Tabla ue:
ID_E --> Foreign Key
ID_U --> Foreign Key

Basicamente esa, ahora quiero mostrar la lista de todas las empresas, y ademas un campo que diga si el usuario esta o no en cada una de las empresas.

Lo que hago ahora, una sola consulta sql:

Código PHP:
$id_u 2//Ejemplo
$sql mysql_query("
SELECT e.Nombre, "
Si" AS Existe
FROM e
LEFT JOIN ue ON e.ID = ue.ID_E
WHERE ue.ID_U =$id_u
GROUP BY e.Nombre
UNION SELECT e.Nombre, "
No" AS Existe
FROM e
WHERE e.ID NOT
IN (
SELECT ue.ID_E
FROM ue
WHERE ue.ID_U =$id_u
)"
); 
Y funciona, en el primer select hay un gropu by que no duplique por la relacion de la tabla e y ue (uno a varios)
y bueno los escribo:

Código PHP:
if (mysql_num_rows($sql)==0){
echo
' NO hay empresas';
die();
}
echo
'<table><tr>
<td>Empresa</td>
<td>Estas aqui?</td>
</tr>'
;
while (
$f=mysql_fetch_assoc($sql)){
echo
'
<tr>
<td>'
.$f['Nombre'].'</td>
<td>'
.$f['Existe'].'</td>
</tr>'
;
}
echo
'</table>';
mysql_free_result($sql); 
O la otra que estaba pensando es llamar las empresas y cada que recorre verificar si el usuario existe asi:

Código PHP:
$id_u 2;
$sql mysql_query("
SELECT e.ID as i,e.Nombre as n FROM e"
);
if (
mysql_num_rows($sql)==0){
echo
' No hay Empresas';
die();
}
echo
'<table><tr>
<td>Empresa</td>
<td>Estas aqui?</td>
</tr>'
;
while (
$f=mysql_fetch_assoc($sql)){
$aqui "Si";
$q mysql_query("
Select ue.Id_u FROM ue WHERE ue.ID_U = $id_u AND ue.ID_E = $f['i']"
);
if (
mysql_num_rows($q)==0){$aqui 'No'}
mysql_free_result($q)// Libero $q Aqui?, o fuera del bucle?
echo'
<tr>
<td>'
.$f['Nombre'].'</td>
<td>'
.$aqui.'</td>
</tr>'

}
echo
'</table>'
mysql_free_result($sql); 
Bueno ojala me hayas entendido. Y la pregunta cual es mas optimo?, bueno esa de liberar "$q" dentro o fuera del bucle.

Gracias y disculpa haberlo hecho tan largo.