Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Select multiple Mysql y PHP?

Estas en el tema de Select multiple Mysql y PHP? en el foro de PHP en Foros del Web. Hola amigos, necesito ayuda para poder realizar un select que mezcla distintas consultas. El SELECT es: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT DISTINCT mercurio.linea.nombre_linea ...
  #1 (permalink)  
Antiguo 23/08/2015, 01:27
 
Fecha de Ingreso: agosto-2015
Ubicación: Talcahuano
Mensajes: 5
Antigüedad: 9 años, 3 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.
  #2 (permalink)  
Antiguo 23/08/2015, 08:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Select multiple Mysql y PHP?

A ver, si esa exactamente la misma consulta entonces no deberías tener problemas, es decir, mientras no alteres el código SQL de la consulta debería funcionar.

Ahora si el problema es que no se extraen los datos también carece de sentido, porque incluso phpMyAdmin usa las mismas funciones que tu.

¿Cómo es que ellos pueden y tu no?

No sabemos.

Necesitas inspeccionar tu código, dentro del while() coloca lo siguiente:
Código PHP:
Ver original
  1. var_dump($row);

Por otro lado si estás alterando la consulta con variables del usuario puede que ahí esté otro problema.

Primero resuelve la lógica usando la consulta por defecto: la que sí funciona.

Cuando corrijas tu lógica en el while() entonces podemos ver la otra.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 23/08/2015, 10:32
 
Fecha de Ingreso: agosto-2015
Ubicación: Talcahuano
Mensajes: 5
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Select multiple Mysql y PHP?

Amigo gracias por responder, he hecho lo que mencionas para revisar el while:
Código PHP:
while($row mysql_fetch_array($result))
{
var_dump($row);

y no retorna absolutamente nada, es como que no entrara nunca al while, el select
es exactamente el mismo que probé en el "PHPMYADMIN", de hecho puedo copiarlo
directamente del php en este momento (solo el select) y hacerlo funcionar sin problemas en el phpmyadmin...
en el .php es como que no reconociera nada, el fetch_array no reconoce nada... probé con mysql_fetch_field y ahí si entra al ciclo del while...
pero no me sirve ya que necesito los nombres específicos no como un objeto.

Saludos!
pd: existirá alguna manera de ver cuales funciones invoca el phpmyadmin para entregarme resultados? seguramente el fetch_array no lo utiliza
  #4 (permalink)  
Antiguo 23/08/2015, 12:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Select multiple Mysql y PHP?

Pues mira, sólo puede suceder lo siguiente:

Si la consulta es correcta, la ejecución no produce errores, y sin embargo jamás entra al while() pero el resto del código si se ejecuta: entonces no es problema de código, sencillamente la misma consulta no te está arrojando nada.

El tema aquí es que mientras el código PHP no presente errores no significa que esté mal, así que el hecho de que "la consulta no devuelva nada" no lo convierte ya en un problema de PHP: y de hecho puede que nunca haya sido problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 23/08/2015, 12:46
 
Fecha de Ingreso: agosto-2015
Ubicación: Talcahuano
Mensajes: 5
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Select multiple Mysql y PHP?

Comprendo a lo que te refieres, es que igual es extraño que no entre al ciclo while del Fetch_array ya que en el myadmin si retorna los valores que necesito. No logro descubir que esta mal.
hice la prueba con el fetch_field
Código PHP:
while ($a=mysql_fetch_field($result))
{
echo 
var_dump($a);
echo 
"<br>";

y me retorna lo siguiente:
"object(stdClass)#1 (13) { ["name"]=> string(12) "nombre_linea" ["table"]=> string(5) "linea" ["def"]=> string(0) "" ["max_length"]=> int(0) ["not_null"]=> int(1) ["primary_key"]=> int(0) ["multiple_key"]=> int(0) ["unique_key"]=> int(1) ["numeric"]=> int(0) ["blob"]=> int(0) ["type"]=> string(6) "string" ["unsigned"]=> int(0) ["zerofill"]=> int(0) }

object(stdClass)#2 (13) { ["name"]=> string(15) "letra_recorrido" ["table"]=> string(9) "recorrido" ["def"]=> string(0) "" ["max_length"]=> int(0) ["not_null"]=> int(1) ["primary_key"]=> int(0) ["multiple_key"]=> int(0) ["unique_key"]=> int(0) ["numeric"]=> int(0) ["blob"]=> int(0) ["type"]=> string(6) "string" ["unsigned"]=> int(0) ["zerofill"]=> int(0) } "

Ademas el
Código PHP:
$result mysql_query($sql2$link);
echo 
var_dump($result); 
me retorna : "resource(7) of type (mysql result)"

como tu dices funciona pero no retorna y por que retorna en el myadmin. espero solucionarlo.
saludos
  #6 (permalink)  
Antiguo 23/08/2015, 16:03
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Select multiple Mysql y PHP?

Apostaría a que el problema esta en la palabra 'Hualpén', si el archivo PHP no esta codificado como UTF8 sin BOM surgen problemas con los caracteres especiales.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #7 (permalink)  
Antiguo 23/08/2015, 18:04
 
Fecha de Ingreso: agosto-2015
Ubicación: Talcahuano
Mensajes: 5
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Select multiple Mysql y PHP?

Amigo, me acabas de solucionar el problema.. no era exactamente lo que dices.
El archivo PHP esta codificado en utf-8 como su estructura interna y aun asi no funciona.
Opte por la solucion que no queria realizar pero no me queda otra, saque los tildes y "Ñ"
de la BBDD. Funciona arrojando los resultados que necesito, sigo sin entender porque no
funciona siendo que esta todo lo necesario para que procese el UTF-8.
SALUDOS!

pd: donde modifico esa edición de "utf-8 sin BOM" ya que en el bloc de notas solo da la opción utf-8????

Última edición por rpstrato; 23/08/2015 a las 18:10
  #8 (permalink)  
Antiguo 23/08/2015, 20:09
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Select multiple Mysql y PHP?

Cita:
donde modifico esa edición de "utf-8 sin BOM" ya que en el bloc de notas solo da la opción utf-8????
Me parece que tu problema de base es que usas el block de notas para programar... ese "editor" no sirve ni para ocupar espacio .

Bajate el notepad++ o cualquier otro decente, en la pestaña de "codificacion" vas a encontrar utf8 sin bom entre otra decena de formatos.

UTF8 no es lo mismo que UTF8 sin BOM, de hecho, entre ANSI y UTF8 no hay casi diferencia, por lo que el problema no se soluciona, la unica forma es quitando el "BOM" que es un conjunto de datos que se agregan al inicio de un fichero de texto plano (a nivel binario) y es el responsable de los problemas.

no es necesario alterar la base de datos, solo con cambiar eso alcanzaba pero si ya lo hiciste...
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #9 (permalink)  
Antiguo 23/08/2015, 22:00
 
Fecha de Ingreso: agosto-2015
Ubicación: Talcahuano
Mensajes: 5
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Select multiple Mysql y PHP?

Uso el Sublime Text y el notepad++, no sabia que se podía cambiar en esos editores... ignorancia mía, vale por la aclaración. De hecho después me di cuenta de lo que dices pero ya logre arreglarlo con tildes y todo, era un problema de cotejamiento. Los datos estaban con otro en la BBDD y fueron ingresados con ese anteriormente, reingrese algunos y
Gracias por la ayuda!

Etiquetas: mysql, mysql+consulta, mysql+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:46.