Foros del Web » Programando para Internet » PHP »

Dudas con claves foraneas

Estas en el tema de Dudas con claves foraneas en el foro de PHP en Foros del Web. Hola, he creado dos tablas (mysql), wiki y wiki_discusion y son foraneas, sirven para crear una noticia y sus respectivos comentarios. Realizo la siguiente consulta: ...
  #1 (permalink)  
Antiguo 15/09/2006, 09:54
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Dudas con claves foraneas

Hola, he creado dos tablas (mysql), wiki y wiki_discusion y son foraneas, sirven para crear una noticia y sus respectivos comentarios.
Realizo la siguiente consulta:

Código PHP:
$sql=mysql_query("SELECT * FROM wiki INNER JOIN wiki_discusion
                  ON wiki_discusion.id_articulo = wiki.id_articulo
                  WHERE wiki.titulo='$palabra'"
); 
y parece que funciona, pero no consigo mostrar resultados por pantalla, lo intento de la siguiete forma:

Código PHP:
while($row=mysql_fetch_array($sql))
{
    
$autor=$row['wiki_discusion.usuario'];
    
$texto=$row['wiki_discusion.texto'];
        
    echo 
"creado por: $autor el día: (aquí va fecha)";
    echo 
"<br>$texto";

Y digo que parece que funciona por que se que ha de mostrar dos resultado de wiki_discusion y me muestra dos veces lo de creado por: el día: pero las variables no las muestra en pantalla.
El parametro $_GET se que lo recoje bien, por que lo imprimo en otra parte del código y va bien.
¿por que no me funciona esto?
  #2 (permalink)  
Antiguo 15/09/2006, 10:09
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
No antepongas la tabla al campo, aqui:

Código PHP:
while($row=mysql_fetch_array($sql))
{
    
$autor=$row['wiki_discusion.usuario'];
    
$texto=$row['wiki_discusion.texto'];
        
    echo 
"creado por: $autor el día: (aquí va fecha)";
    echo 
"<br>$texto";

Déjalo de esta forma:

Código PHP:
while($row=mysql_fetch_array($sql))
{
    
$autor=$row['usuario'];
    
$texto=$row['texto'];
        
    echo 
"creado por: $autor el día: (aquí va fecha)";
    echo 
"<br>$texto";

  #3 (permalink)  
Antiguo 15/09/2006, 10:15
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Ok. Lo he probado y funciona, gracias, pero me queda una duda, si da la casualidad de que en las dos tablas hay campos con el mismo nombre, por ejemplo el campo texto, ¿cual coje? el de antes del INNER JOIN?
  #4 (permalink)  
Antiguo 15/09/2006, 10:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por kennyhp Ver Mensaje
Ok. Lo he probado y funciona, gracias, pero me queda una duda, si da la casualidad de que en las dos tablas hay campos con el mismo nombre, por ejemplo el campo texto, ¿cual coje? el de antes del INNER JOIN?
Deberías para separar ambos resultados de las dos tablas aplicar un "ALIAS" en tu sentencia SQL
Código PHP:
$sql=mysql_query("SELECT wiki_discusion.id_articulo AS id_articulo_discusion,* FROM wiki INNER JOIN wiki_discusion 
                  ON wiki_discusion.id_articulo = wiki.id_articulo 
                  WHERE wiki.titulo='$palabra'"
); 
Así te harías referencia en tus "$row[]" por el nombre del alias que uses y le diste nombre.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 15/09/2006, 10:30
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
No termino de entender como aplicas el Alias...
  #6 (permalink)  
Antiguo 15/09/2006, 10:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por kennyhp Ver Mensaje
No termino de entender como aplicas el Alias...
No sé si conoces como hacer referencia a un campo de una tabla concretamente .. Bueno, se hace por su nombre_tabla. (punto) nombre del campo. El alias es el "AS" y se le dá un nombre a continuación:

wiki_discusion.id_articulo AS id_articulo_discusion

Cara a "PHP" o mejor dicho lo que hace tu "alias" para que lo veas claro es generar "otra" columna en tu resultado con ese nombre y esos datos, por eso puedes referenciarte en PHP fácilmente por el nombre del alias que distes.

(Podrías reafirmar el tema en el foro de Base de datos .. intenta enfocar las preguntas en el foro adecuado).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 16/09/2006, 20:38
 
Fecha de Ingreso: septiembre-2006
Mensajes: 11
Antigüedad: 17 años, 7 meses
Puntos: 0
Otro ejemplo es cuando haces esto

select nombre, saldo from empleado e, nomina n where e.nombre="nombre" and n.saldo="saldo"

Aqui usas el alias (e, n) para posteriormente usar los atributos correspondientes.

presenta unas amigas no??
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 09:39.