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.