ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: Don_Gusanito en Abril 17, 2006, 15:25:12

Título: (PHP - Help) Consulta de valores en varias tablas e impresion
Publicado por: Don_Gusanito en Abril 17, 2006, 15:25:12
Tengo el siguiente inconveniente, estoy haciendo una consulta mysql en la que traigo valores de 3 tablas, la consulta funciona y con eso no hay inconvenientes.
El tema esta en que al momento de imprimir los valores traidos en la consulta no lo puedo hacer. Este es el codigo que escribi:


<?
include("conex2.php");
$link=Conectarse();

$query = "SELECT noticias.id, noticias.titulo, noticias.categ, categorias.nombre, noticias.topico,
topicos.nombre FROM noticias , categorias , topicos where noticias.categ=categorias.id and
noticias.topico=topicos.id order by noticias.id desc";

$result = mysql_query($query);

echo "<table  border='0'> <tr><td>Titulo</td><td>Categoria</td><td>Topico</td></tr>";
while ($list = mysql_fetch_array($result))
{
echo "<tr>";
echo  "<td>".$list['noticias.titulo']."</td><td>"
    .$list['categorias.nombre']."</td><td>"
    .$list['topicos.nombre']."</td><td>";

echo "</tr>";

}
echo "</table>";
?>


Muchas gracias a todo aquel que me pueda dar una mano.
Título: Re: (PHP - Help) Consulta de valores en varias tablas e impresion
Publicado por: Predicador en Abril 17, 2006, 17:18:36
Hola,
El problema esta en como trabaja el mysql_fetch_array() que al haber columnas con el mismo nombre (ya que no toma el nombre te la tabla para generar los nombres de los subindices) el que primero aparece tiene precedencia, por ende lo que debes hacer es definir un alias en la consulta sql (usando el AS) para asignarle un nombre diferente, aca te dejo tu codigo modificado.
include("conex2.php");
$link=Conectarse();

$query = "SELECT noticias.id, noticias.titulo, noticias.categ, categorias.nombre as categ, noticias.topico as topic,
topicos.nombre FROM noticias , categorias , topicos where noticias.categ=categorias.id and
noticias.topico=topicos.id order by noticias.id desc";

$result = mysql_query($query);

echo "<table  border='0'> <tr><td>Titulo</td><td>Categoria</td><td>Topico</td></tr>";
while ($list = mysql_fetch_array($result))
{
echo "<tr>";
echo  "<td>".$list['titulo']."</td><td>"
    .$list['categ']."</td><td>"
    .$list['topic']."</td><td>";
}


Fijate que a titulo no le genere un alias, pero este deberia salir bien ya que ademas de ser el primero en la lista de columnas con ese nombre no hay otro repetido, asi que no se generan ambiguedades.
Si no queres usar aliases en la consulta sql, lo que debs hacer es acceder a los campos por indice y no por nombre (ya que el mysql_fetch_array() genera tanto arreglos asociativos como numericos) y lo accederias asi:
echo  "<td>".$list[1]."</td><td>"
    .$list[3]."</td><td>"
    .$list[4]."</td><td>";


Baii y exitos con tu proyecto.
Título: Re: (PHP - Help) Consulta de valores en varias tablas e impresion
Publicado por: Don_Gusanito en Abril 17, 2006, 20:19:23
Como siempre Predicador, no tengo mas que palabras de agradecimiento para vos.

Ahora aprobecho para hacerte otra consulta que masomenos tiene que ver con el tema xq estuve probando y quiero saber si se puede.

En MySql no funciona una consulta como la siguiente, no?

Select e.nombre, d.departamento from empleados e, departamentos d
where e.dept_id=d.id
Título: Re: (PHP - Help) Consulta de valores en varias tablas e impresion
Publicado por: Predicador en Abril 18, 2006, 02:56:00
Para ser estricto, deberias usar el AS para definir los aliases de las tablas (empleados e, departamentos d), pero a veces los ODBC drivers se encargan de hacer un pre-parsing y solucionan esos casos, podrias probarlo, si ves que en tu caso no funciona, hacelo como SQL especifica, esto es:
SELECT e.nombre, d.departamento FROM empleados AS e, departamentos AS d
WHERE e.dept_id = d.id

De otro modo deberia andar bien :D
Baii.
Título: Re: (PHP - Help) Consulta de valores en varias tablas e impresion
Publicado por: Camello_AR en Abril 21, 2006, 23:54:38
Si bien no me solucina nda, muy buena sobre la Explicación sobre aliases (especialmente para achicar el nombre de tablas para no poner tabla1. t1.. sino 1.a FROM tabla1 as 1)

Predicador Master of SQL (Structured Query Lenguaje)
Título: Re: (PHP - Help) Consulta de valores en varias tablas e impresion
Publicado por: Predicador en Abril 22, 2006, 10:41:49
lol, no soy master en nada, solo soy tan buen mentiroso que mis mentiras se hacen realidad :P
Baii
Título: Re: (PHP - Help) Consulta de valores en varias tablas e impresion
Publicado por: Camello_AR en Abril 22, 2006, 10:51:48
No te achiques, siempre das en la tecla con SQL y PHP se ve que estas con eso