Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como juntar duas tabelas com ssp.class.php


Como PaulF apontado, você precisa usar JOIN ou subconsulta para recuperar o nome do pai da mesma tabela.

Suponho que você esteja usando ssp.class.php para processar seus dados no lado do servidor com base no exemplo que você mencionou.

Classe ssp.class.php não oferece suporte a junções e subconsultas, mas há uma solução alternativa. O truque é usar a subconsulta como mostrado abaixo em $table definição. Substituir table com o nome real da tabela na subconsulta.
$table = <<<EOT
 (
    SELECT 
      a.id, 
      a.name, 
      a.father_id, 
      b.name AS father_name
    FROM table a
    LEFT JOIN table b ON a.father_id = b.id
 ) temp
EOT;

$primaryKey = 'id';

$columns = array(
   array( 'db' => 'id',          'dt' => 0 ),
   array( 'db' => 'name',        'dt' => 1 ),
   array( 'db' => 'father_id',   'dt' => 2 ),
   array( 'db' => 'father_name', 'dt' => 3 )
);

$sql_details = array(
   'user' => '',
   'pass' => '',
   'db'   => '',
   'host' => ''
);

require( 'ssp.class.php' );
echo json_encode(
   SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);

Você também precisa editar ssp.class.php e substitua todas as instâncias de FROM `$table` com FROM $table para remover backticks.

Certifique-se de que todos os nomes de coluna sejam exclusivos, caso contrário, use AS para atribuir um alias.

NOTAS


Há também github.com/emran/ssp repositório que contém o ssp.class.php aprimorado apoiando JOINs.

LINKS


Consulte jQuery DataTables:Usando WHERE, JOIN e GROUP BY com ssp.class.php Para maiores informações.