Ir al contenido


Foto

Consulta Left Join SQL Server + PHP


  • Por favor identifícate para responder
4 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 30 enero 2013 - 01:30

Pues eso, haciendo pruebas para conectarme a SQL Server a través de PHP, tengo el siguiente code:

	
<?php
      //creamos un nuevo objeto ADO
$conectar = new COM ("ADODB.Connection") or die("No se puede iniciar ADO!");

//Creamos la cadena de conección
$connStr = "Provider=SQLOLEDB.1;Password=".$clave.";Persist Security Info=True;User ID=".$usuario.";Initial Catalog=".$database.";Data Source=".$DSN;

//creamos la conección
$conectar->open($connStr);

//confeccionamos la consulta
$query = "select v.VehiculoID, v.ficha, a.Estado, c.Descripcion
from vehiculos as v
left join TBL_ASIGNACION  as a on a.VehiculoID = v.VehiculoID
left join TBL_COMBUSTIBLE_TIPO as c ON c.IDCombustible = v.tipo_combustible
ORDER BY v.ficha";

//ejecutamos la consulta
$fichas = $conectar->execute($query);

for ($i=0; $i < $num_columns; $i++) {
$fld[$i] = $fichas->Fields($i);
}

echo $fld[0] ."<br /><table>";

while(!$fichas->EOF){
echo "<tr>";
for ($i=0; $i < $num_columns; $i++) {
        echo "<td>" . $fld[$i]->value . "</td>";
    }
    echo "</tr>";

    $fichas->MoveNext();
}

echo "</table>";

$fichas->Close();
$conectar->Close();

?>


Pues no me muestra registro con una consulta con left join, sin embargo, un simple select de dos campos sí muestra registro, ¿Por qué?

Saludos.
  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 30 enero 2013 - 02:11

Saludos.

¿Esta línea esta correcta?, no es que necesariamente sea el problema:

left join TBL_COMBUSTIBLE_TIPO as c ON c.IDCombustible = v.tipo_combustible 


  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 30 enero 2013 - 02:18

Pues sí es correcta, incluso lo he probado sólo con el JOIN.

Saludos.
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 30 enero 2013 - 02:40

Pues me respondo, he cometido una garrafada, había suprimido la línea donde asignaba el valor de la variable $num_columns, por eso el ciclo for daba siempre 0!!!:


<?php
//creamos un nuevo objeto ADO
$conectar = new COM ("ADODB.Connection") or die("No se puede iniciar ADO!");

//Creamos la cadena de conección
$connStr = "Provider=SQLOLEDB.1;Password=".$clave.";Persist Security Info=True;User ID=".$usuario.";Initial Catalog=".$database.";Data Source=".$DSN;

//creamos la conección
$conectar->open($connStr);

//confeccionamos la consulta
$query = "select v.VehiculoID, v.ficha, a.Estado, c.Descripcion
from vehiculos as v
left join TBL_ASIGNACION  as a on a.VehiculoID = v.VehiculoID
left join TBL_COMBUSTIBLE_TIPO as c ON c.IDCombustible = v.tipo_combustible
ORDER BY v.ficha";

//ejecutamos la consulta
$fichas = $conectar->execute($query);

$num_columns = $fichas->Fields->Count();

for ($i=0; $i < $num_columns; $i++) {
$fld[$i] = $fichas->Fields($i);
}

echo $fld[0] ."<br /><table>";

while(!$fichas->EOF){
echo "<tr>";
for ($i=0; $i < $num_columns; $i++) {
        echo "<td>" . $fld[$i]->value . "</td>";
    }
    echo "</tr>";

    $fichas->MoveNext();
}

echo "</table>";


$fichas->Close();
$conectar->Close();

?>


*-)  *-)
  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.459 mensajes
  • LocationMéxico

Escrito 30 enero 2013 - 04:06

Vaya, yo que ya venía con la respuesta, algo tan claro y no lo veias, caray amigo..... :D :D :D

Saludos
  • 0




IP.Board spam blocked by CleanTalk.