Diferencia entre revisiones de «Como ejecutar sentencia JOIN en un find() en KumbiaPHP Framework»

De KumbiaPHP Framework Wiki
(Página creada con 'La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: ...')
 
(Adaptando a la beta2)
 
(No se muestran 12 ediciones intermedias de 4 usuarios)
Línea 1: Línea 1:
 +
{{cleanupbox
 +
|image=[[Archivo:Import.png|40px]]
 +
|texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br />
 +
<span style="font-size:90%">El ejemplo presente es completamente funcional, pero su redacción debe mejorar</span>
 +
}}
 +
 
La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado.
 
La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado.
  
Línea 4: Línea 10:
  
 
== Creamos Nuestras tablas y le agregamos registros ==
 
== Creamos Nuestras tablas y le agregamos registros ==
<pre>
+
<source lang=sql>
 
CREATE TABLE username(
 
CREATE TABLE username(
 
   id int(11) NOT NULL AUTO_INCREMENT,
 
   id int(11) NOT NULL AUTO_INCREMENT,
Línea 33: Línea 39:
 
(2, 'Carlos Beltran', 'Presidencia'),
 
(2, 'Carlos Beltran', 'Presidencia'),
 
(3, 'Luis Marcano', 'Auditoria');
 
(3, 'Luis Marcano', 'Auditoria');
</pre>
+
</source>
  
 
== Creando nuestros Modelos ==  
 
== Creando nuestros Modelos ==  
Línea 40: Línea 46:
 
<source lang="php" line>
 
<source lang="php" line>
 
<?php
 
<?php
 
+
class Username extends ActiveRecord
class Username extends ActiveRecord{
+
{
 
 
 
}
 
}
?>
 
 
</source>
 
</source>
 
'''''[app]/models/usuario.php:'''''
 
'''''[app]/models/usuario.php:'''''
 
<source lang="php" line>
 
<source lang="php" line>
 
<?php
 
<?php
 
+
class Usuario extends ActiveRecord
class Usuario extends ActiveRecord{
+
{  
   
 
 
     public function getInnerJoin(){
 
     public function getInnerJoin(){
 
         return $this->find('columns: usuario.id, nombres, departamento, username',
 
         return $this->find('columns: usuario.id, nombres, departamento, username',
Línea 66: Línea 69:
 
                           'join: right outer join username on usuario.id = username.usuario_id');
 
                           'join: right outer join username on usuario.id = username.usuario_id');
 
     }
 
     }
 
 
}
 
}
 
?>
 
?>
 
</source>
 
</source>
  
Aqui mostramos los distintos metodos como podemos utilizar el find, para relacionar dos o mas tablas tablas en una consulta.  
+
Aquí mostramos los distintos métodos como podemos utilizar el [[Consultas#find | find()]], para relacionar dos o mas tablas tablas en una consulta.
  
 
== Creamos nuestro Controller ==
 
== Creamos nuestro Controller ==
Línea 79: Línea 81:
 
<?php
 
<?php
  
class UsuarioController extends ApplicationController{
+
class UsuarioController extends AppController{
 
      
 
      
 
     public function index(){
 
     public function index(){
   
+
        $usuario = Load::model('usuario');
    $this->inner = $this->Usuario->getInnerJoin();
+
        $this->inner = $usuario->getInnerJoin();
    $this->left = $this->Usuario->getleftJoin();
+
        $this->left = $usuario->getleftJoin();
    $this->right = $this->Usuario->getrightJoin();
+
        $this->right = $usuario->getrightJoin();
 
     }
 
     }
 
}
 
}
Línea 104: Línea 106:
 
     </tr>
 
     </tr>
 
     <?php foreach($inner As $i): ?>
 
     <?php foreach($inner As $i): ?>
    <? echo tr_color('#ff0000', '#fff')?>
+
      <tr>
    <td><?php echo $i->username ?></td>
+
          <td><?php echo $i->username ?></td>
    <td><?php echo $i->nombres ?></td>
+
          <td><?php echo $i->nombres ?></td>
    <td><?php echo $i->departamento ?></td>
+
          <td><?php echo $i->departamento ?></td>
 +
      </tr>
 
     <?php endforeach; ?>
 
     <?php endforeach; ?>
 
</table>
 
</table>
Línea 119: Línea 122:
 
     </tr>
 
     </tr>
 
     <?php foreach($left As $i): ?>
 
     <?php foreach($left As $i): ?>
    <? echo tr_color('#ff0000', '#fff')?>
+
      <tr>
    <td><?php echo $i->username ?></td>
+
          <td><?php echo $i->username ?></td>
    <td><?php echo $i->nombres ?></td>
+
          <td><?php echo $i->nombres ?></td>
    <td><?php echo $i->departamento ?></td>
+
          <td><?php echo $i->departamento ?></td>
 +
      </tr>
 
     <?php endforeach; ?>
 
     <?php endforeach; ?>
 
</table>
 
</table>
Línea 134: Línea 138:
 
     </tr>
 
     </tr>
 
     <?php foreach($right As $i): ?>
 
     <?php foreach($right As $i): ?>
    <? echo tr_color('#ff0000', '#fff')?>
+
      <tr>
    <td><?php echo $i->username ?></td>
+
          <td><?php echo $i->username ?></td>
    <td><?php echo $i->nombres ?></td>
+
          <td><?php echo $i->nombres ?></td>
    <td><?php echo $i->departamento ?></td>
+
          <td><?php echo $i->departamento ?></td>
 +
      </tr>
 
     <?php endforeach; ?>
 
     <?php endforeach; ?>
 
</table>
 
</table>
Línea 144: Línea 149:
  
 
== Screenshots ==
 
== Screenshots ==
[[Archivo:screenshots.jpg]]
+
[[Archivo:Screenshots.jpg|800px]]
 +
[[Categoría:Tutoriales KumbiaPHP]]
 +
 
 +
Realizado por: Hector Rodriguez (Al3jandro)

Revisión actual del 02:32 27 may 2012

{{#if:Import.png |}} {{#if: |}}


La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado.

Debemos crear las dos tablas para realizar con el find unas consultas con el JOIN

Creamos Nuestras tablas y le agregamos registros[editar]

CREATE TABLE username(
  id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(50) NOT NULL,
  usuario_id int(11) NOT NULL,
  PRIMARY KEY (id)
)

-- Volcar la base de datos para la tabla `username`

INSERT INTO username(`id`, `username`, `usuario_id`) VALUES
(1, 'lmarcano', 3),
(2, 'eperez', 1),
(3, 'jlinares', 0);


CREATE TABLE usuario(
  id int(11) NOT NULL AUTO_INCREMENT,
  nombres varchar(100) NOT NULL,
  departamento varchar(100) NOT NULL,
  PRIMARY KEY (id)
)

-- Volcar la base de datos para la tabla `usuario`

INSERT INTO usuario (`id`, `nombres`, `departamento`) VALUES
(1, 'Elena Perez', 'Administracion'),
(2, 'Carlos Beltran', 'Presidencia'),
(3, 'Luis Marcano', 'Auditoria');

Creando nuestros Modelos[editar]

Ahora creamos nuestros modelos [app]/models/username.php:

<?php
class Username extends ActiveRecord
{
}

[app]/models/usuario.php:

<?php
class Usuario extends ActiveRecord
{    
    public function getInnerJoin(){
        return $this->find('columns: usuario.id, nombres, departamento, username',
                           'join: inner join username on usuario.id = username.usuario_id');
    }
    
     public function getLeftJoin(){
        return $this->find('columns: usuario.id, nombres, departamento, username',
                           'join: left outer join username on usuario.id = username.usuario_id');
    }   

     public function getRightJoin(){
        return $this->find('columns: usuario.id, nombres, departamento, username',
                           'join: right outer join username on usuario.id = username.usuario_id');
    }
}
?>

Aquí mostramos los distintos métodos como podemos utilizar el find(), para relacionar dos o mas tablas tablas en una consulta.

Creamos nuestro Controller[editar]

[app]/controller/usuario_controller.php:

<?php

class UsuarioController extends AppController{
    
    public function index(){
        $usuario = Load::model('usuario');
        $this->inner = $usuario->getInnerJoin();
        $this->left = $usuario->getleftJoin();
        $this->right = $usuario->getrightJoin();
    }
}

?>

Creamos nuestra Vista[editar]

[app]/views/usuario/index.phtml:

<h2>Consulta con el Inner Join</h2>
<center>
<table border='1'>
    <tr>
        <th>Username</th>
        <th>Nombre del Usuario</th>
        <th>Departamento</th>
    </tr>
    <?php foreach($inner As $i): ?>
       <tr>
          <td><?php echo $i->username ?></td>
          <td><?php echo $i->nombres ?></td>
          <td><?php echo $i->departamento ?></td>
       </tr>
    <?php endforeach; ?>
</table>
<br />
<h2>Consulta con el Left Outer Join</h2>
<table border='1'>
    <tr>
        <th>Username</th>
        <th>Nombre del Usuario</th>
        <th>Departamento</th>
    </tr>
    <?php foreach($left As $i): ?>
       <tr>
          <td><?php echo $i->username ?></td>
          <td><?php echo $i->nombres ?></td>
          <td><?php echo $i->departamento ?></td>
       </tr>
    <?php endforeach; ?>
</table>
<br />
<h2>Consulta con el Right Outer Join</h2>
<table border='1'>
    <tr>
        <th>Username</th>
        <th>Nombre del Usuario</th>
        <th>Departamento</th>
    </tr>
    <?php foreach($right As $i): ?>
       <tr>
           <td><?php echo $i->username ?></td>
           <td><?php echo $i->nombres ?></td>
           <td><?php echo $i->departamento ?></td>
       </tr>
    <?php endforeach; ?>
</table>
</center>

Screenshots[editar]

Screenshots.jpg

Realizado por: Hector Rodriguez (Al3jandro)