Mysql
 sql >> Database >  >> RDS >> Mysql

Come unire due tabelle con ssp.class.php

Come PaulF sottolineato, devi usare JOIN o sottoquery per recuperare il nome del padre dalla stessa tabella.

Presumo che tu stia usando ssp.class.php per elaborare i tuoi dati lato server in base all'esempio che hai citato.

Classe ssp.class.php non supporta join e sottoquery, ma esiste una soluzione alternativa. Il trucco è usare la sottoquery come mostrato di seguito in $table definizione. Sostituisci table con il nome effettivo della tabella nella sottoquery.

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

Devi anche modificare ssp.class.php e sostituisci tutte le istanze di FROM `$table` con FROM $table per rimuovere i backtick.

Assicurati che tutti i nomi delle colonne siano univoci, altrimenti usa AS per assegnare un alias.

NOTE

C'è anche github.com/emran/ssp repository che contiene ssp.class.php avanzato sostenere le JOIN.

LINK

Vedi jQuery DataTables:utilizzo di WHERE, JOIN e GROUP BY con ssp.class.php per ulteriori informazioni.