Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment joindre deux tables avec ssp.class.php

Comme PaulF souligné, vous devez utiliser JOIN ou sous-requête pour récupérer le nom du père dans la même table.

Je suppose que vous utilisez ssp.class.php pour traiter vos données côté serveur sur la base de l'exemple que vous avez mentionné.

Classe ssp.class.php ne prend pas en charge les jointures et les sous-requêtes, mais il existe une solution de contournement. L'astuce consiste à utiliser la sous-requête comme indiqué ci-dessous dans $table définition. Remplacer table avec votre nom de table réel dans la sous-requête.

$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 )
);

Vous devez également modifier ssp.class.php et remplacer toutes les instances de FROM `$table` avec FROM $table pour supprimer les backticks.

Assurez-vous que tous les noms de colonne sont uniques, sinon utilisez AS pour attribuer un alias.

REMARQUES

Il y a aussi github.com/emran/ssp référentiel contenant ssp.class.php amélioré prenant en charge les JOIN.

LIENS

Voir jQuery DataTables :Utilisation de WHERE, JOIN et GROUP BY avec ssp.class.php pour plus d'informations.