Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/08/2015, 01:27
rpstrato
 
Fecha de Ingreso: agosto-2015
Ubicación: Talcahuano
Mensajes: 5
Antigüedad: 8 años, 8 meses
Puntos: 0
Pregunta Select multiple Mysql y PHP?

Hola amigos, necesito ayuda para poder realizar un select que mezcla distintas consultas.
El SELECT es:
Código MySQL:
Ver original
  1. SELECT DISTINCT mercurio.linea.nombre_linea, mercurio.recorrido.letra_recorrido FROM mercurio.linea, mercurio.recorrido,
  2.     mercurio.recorrido_has_ciudad, mercurio.ciudad, mercurio.recorrido_has_calle, mercurio.calle, mercurio.recorrido_has_sector,
  3.     mercurio.sector, mercurio.recorrido_has_lugar, mercurio.lugar WHERE mercurio.linea.id_linea = mercurio.recorrido.linea_id_linea
  4.     AND mercurio.recorrido.id_recorrido = mercurio.recorrido_has_ciudad.recorrido_id_recorrido AND mercurio.recorrido_has_ciudad.ciudad_id_ciudad =
  5.     (SELECT mercurio.ciudad.id_ciudad FROM mercurio.ciudad WHERE mercurio.ciudad.nombre_ciudad = 'Hualpén') AND mercurio.recorrido_has_calle.calle_id_calle =
  6.     (SELECT mercurio.calle.id_calle FROM mercurio.calle WHERE mercurio.calle.nombre_calle = 'Gibraltar') AND mercurio.recorrido_has_sector.sector_id_sector =
  7.     (SELECT mercurio.sector.id_sector FROM mercurio.sector    WHERE mercurio.sector.nombre_sector = 'Diego Portales') AND mercurio.recorrido_has_lugar.lugar_id_lugar =
  8.     (SELECT mercurio.lugar.id_lugar FROM mercurio.lugar WHERE mercurio.lugar.nombre_lugar = 'ENAP') AND mercurio.linea.nombre_linea
  9.  
  10.     IN (    SELECT DISTINCT mercurio.linea.nombre_linea FROM mercurio.linea, mercurio.recorrido, mercurio.recorrido_has_ciudad, mercurio.ciudad, mercurio.recorrido_has_calle,
  11.             mercurio.calle, mercurio.recorrido_has_sector, mercurio.sector, mercurio.recorrido_has_lugar, mercurio.lugar WHERE  mercurio.linea.id_linea = mercurio.recorrido.linea_id_linea
  12.             AND mercurio.recorrido.id_recorrido = mercurio.recorrido_has_ciudad.recorrido_id_recorrido AND mercurio.recorrido_has_ciudad.ciudad_id_ciudad =
  13.             (SELECT mercurio.ciudad.id_ciudad FROM mercurio.ciudad WHERE mercurio.ciudad.nombre_ciudad = 'Talcahuano') AND mercurio.recorrido_has_calle.calle_id_calle =
  14.             (SELECT mercurio.calle.id_calle FROM mercurio.calle WHERE mercurio.calle.nombre_calle = 'Bilbao') AND mercurio.recorrido_has_sector.sector_id_sector =
  15.             (SELECT mercurio.sector.id_sector FROM mercurio.sector WHERE mercurio.sector.nombre_sector = 'Cerro la Gloria') AND mercurio.recorrido_has_lugar.lugar_id_lugar =
  16.             (SELECT mercurio.lugar.id_lugar FROM mercurio.lugar WHERE mercurio.lugar.nombre_lugar = 'ENAP')
  17.     )

Lo anterior funciona sin problemas y retorna los valores que necesito cuando lo hago trabajar en el "PHPMYADMIN", como pueden ver aquí:



El problema se presenta a la hora de "migrar" esta consulta al PHP. En el caso de (mysql_fetch_array) que nos sirve para obtener las variables en muchos de los casos
no me responde o retorna nada, aquí el código:
Código PHP:
    $sql2 "SELECT DISTINCT mercurio.linea.nombre_linea, mercurio.recorrido.letra_recorrido FROM mercurio.linea, mercurio.recorrido,
    mercurio.recorrido_has_ciudad, mercurio.ciudad, mercurio.recorrido_has_calle, mercurio.calle, mercurio.recorrido_has_sector,
    mercurio.sector, mercurio.recorrido_has_lugar, mercurio.lugar WHERE mercurio.linea.id_linea = mercurio.recorrido.linea_id_linea 
    AND mercurio.recorrido.id_recorrido = mercurio.recorrido_has_ciudad.recorrido_id_recorrido AND mercurio.recorrido_has_ciudad.ciudad_id_ciudad =
    (SELECT mercurio.ciudad.id_ciudad FROM mercurio.ciudad WHERE mercurio.ciudad.nombre_ciudad = 'Hualpén') AND mercurio.recorrido_has_calle.calle_id_calle = 
    (SELECT mercurio.calle.id_calle FROM mercurio.calle WHERE mercurio.calle.nombre_calle = 'Gibraltar') AND mercurio.recorrido_has_sector.sector_id_sector =
    (SELECT mercurio.sector.id_sector FROM mercurio.sector    WHERE mercurio.sector.nombre_sector = 'Diego Portales') AND mercurio.recorrido_has_lugar.lugar_id_lugar =
    (SELECT mercurio.lugar.id_lugar FROM mercurio.lugar WHERE mercurio.lugar.nombre_lugar = 'ENAP') AND mercurio.linea.nombre_linea 

    IN (    SELECT DISTINCT mercurio.linea.nombre_linea FROM mercurio.linea, mercurio.recorrido, mercurio.recorrido_has_ciudad, mercurio.ciudad, mercurio.recorrido_has_calle,
            mercurio.calle, mercurio.recorrido_has_sector, mercurio.sector, mercurio.recorrido_has_lugar, mercurio.lugar WHERE  mercurio.linea.id_linea = mercurio.recorrido.linea_id_linea 
            AND mercurio.recorrido.id_recorrido = mercurio.recorrido_has_ciudad.recorrido_id_recorrido AND mercurio.recorrido_has_ciudad.ciudad_id_ciudad = 
            (SELECT mercurio.ciudad.id_ciudad FROM mercurio.ciudad WHERE mercurio.ciudad.nombre_ciudad = 'Talcahuano') AND mercurio.recorrido_has_calle.calle_id_calle = 
            (SELECT mercurio.calle.id_calle FROM mercurio.calle WHERE mercurio.calle.nombre_calle = 'Bilbao') AND mercurio.recorrido_has_sector.sector_id_sector = 
            (SELECT mercurio.sector.id_sector FROM mercurio.sector WHERE mercurio.sector.nombre_sector = 'Cerro la Gloria') AND mercurio.recorrido_has_lugar.lugar_id_lugar =
            (SELECT mercurio.lugar.id_lugar FROM mercurio.lugar WHERE mercurio.lugar.nombre_lugar = 'ENAP')
    )"
;


$result mysql_query($sql2$link);


if(
$result === FALSE) { 
    die(
mysql_error()); // TODO: better error handling
}

while(
$row mysql_fetch_array($result))
{
  echo 
$row['nombre_linea'];
    echo 
$row['letra_recorrido']; 
     


pd: No adjunte las conexiones con el servidor o la BBDD ya que ahí no esta el error todo se conecta sin problemas. Resumi el codigo del PHP ya que se supone q las VARIABLES son seleccionadas por el usuario, como pueden apreciar puse las variables establecidas para trabajar directamente con la BBDD.


Necesito su ayuda enormemente, es para mi tesis final y no logro hacer funcionar esta consulta con el PHP, reitero la lógica y sintaxis del "select" funciona correctamente en PHPMYADMIN consultado a la bbdd correspondiente. Creo que el drama puede estar en el IN() del select, o en los parentesis del SELECT completo. ALGUNA IDEA?¿


Saludos Colegas.