Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

inner join

Estas en el tema de inner join en el foro de Bases de Datos General en Foros del Web. Hola de nuevo: Por más que avanzo, no logro definir por mi mismo el resultado final de algún código... por eso recurro al foro. El ...
  #1 (permalink)  
Antiguo 03/08/2004, 12:18
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 22 años
Puntos: 0
inner join

Hola de nuevo:

Por más que avanzo, no logro definir por mi mismo el resultado final de algún código... por eso recurro al foro.

El caso: Una tabla se relaciona con otra y arrojan un resultado.

Dos combo box con las ciudades (uno la ciudad de origen y el otro la ciudad de destino...

Al hacer "submit", deberían arrojar la información de vuelo, linea aerea, hora de salida del vuelo, hora de llegada, frecuencia de vuelos, etc. (SOLO LA INFORMACION REFERENTE A LA CIUDAD DE ORIGEN CON RESPECTO A LA DE DESTINO).

El problema es que me arroja como resultado todos los registros de la tabla.

El form.. 2 combo box comunes con las ciudades en post.

el codigo...

Código PHP:
<?
include("config.php");

$origen_desde $_POST['combobox_origen'];
$destino_hacia $_POST['combobox_destino'];
   
$sql="SELECT * FROM origen inner join destino on origen.hacia=destino.hacia ORDER BY salida"
$res=mysql_query($sql) or die ("No se realiza la consulta");

    echo 
"<table border=1 cellpadding=2 cellspacing=0 bordercolor=#006699>";
    echo 
"<tr valign=middle><td align=center width=100>LINEA AEREA</td>";
    echo 
"<td align=center width=50>VUELO</td>";
    echo 
"<td align=center width=100>SALIDA</td>";
    echo 
"<td align=center width=100>LLEGADA</td>";
    echo 
"<td align=center width=50>FRECUENCIA</td>";
    echo 
"<td align=center width=50>AVION</td>";
    echo 
"<td align=center width=50>ESCALA</td></tr><br>";
    echo 
"</table>";
 
while(
$row=mysql_fetch_array($res)){
 
    echo 
"<table border=1 cellpadding=2 cellspacing=0 bordercolor=#006699>";
    echo 
"<tr valign=middle><td align=center width=100>".$row['linea']."</td>";
    echo 
"<td align=center width=50>".$row['vuelo']."</td>";
    echo 
"<td align=center width=100>".$row['salida']."</td>";
    echo 
"<td align=center width=100>".$row['llegada']."</td>";
    echo 
"<td align=center width=50>".$row['frecuencia']."</td>";
    echo 
"<td align=center width=50>".$row['avion']."</td>";
    echo 
"<td align=center width=50>".$row['escala']."</td></tr>";
    }
    echo 
"</table>";
?>
El campo que repito en ambas tablas es "hacia"
  #2 (permalink)  
Antiguo 03/08/2004, 19:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pero .. tu has probado tu consulta SQL en phpMyadmin o cualquier otro GUI para Mysql para corroborar que obtienes los registros que necesitas o que esperas?

Es decir esto te funcionaría?
SELECT * FROM origen inner join destino on origen.hacia=destino.hacia ORDER BY salida

(fijate que omito todo "PHP" .. el problema es de SQL principalmente)

Bueno .. si usas un "join" ya estás usando campos de una y otra tabla .. en tu "*" no indicas que tabla o tablas quieres usar y que campos .. Podrías hacer algo tipo:

SELECT origen.*,destino.* FROM origen inner join destino on origen.hacia=destino.hacia ORDER BY salida

Pero si hay nombres de campos repetidos en ambas tablas .. tendrías que usar ALIAS para no confundir . y sobre todo llamar a cada campo de cada tabla con la sintax:
tabla.campo

De todo esto te podrán orientar mejor en el foro dedicado a SQL: "Base de datos" al cual procedo a mover el mensaje por si tienes más dudas al respecto.

Un saludo,
  #3 (permalink)  
Antiguo 04/08/2004, 08:41
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 22 años
Puntos: 0
Lo pruebo y nada... me sigue arrojando TODOS los registros.

Quite esto:
Código PHP:
<?
$origen_desde 
$_POST['combobox_origen']; 
$destino_hacia $_POST['combobox_destino'];
?>
Y corregi esto:
Código PHP:
<?
$sql
="SELECT origen.*,destino.* FROM origen inner join destino on origen.hacia=destino.hacia ORDER BY salida"
$res=mysql_query($sql) or die ("No se realiza la consulta");
?>

Puedes verlo:

http://www.aviacionaldia.com/itinerarios.htm
http://www.aviacionaldia.com/prueba2.php
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 14:35.