Như PaulF
đã chỉ ra, bạn cần sử dụng JOIN
hoặc truy vấn phụ để lấy tên cha từ cùng một bảng.
Tôi giả sử bạn đang sử dụng ssp.class.php
để xử lý dữ liệu của bạn ở phía máy chủ dựa trên ví dụ bạn đã đề cập.
Lớp ssp.class.php
không hỗ trợ kết hợp và truy vấn phụ, nhưng có một cách giải quyết. Mẹo là sử dụng truy vấn phụ như được hiển thị bên dưới trong $table
Định nghĩa. Thay thế bảng table
với tên bảng thực của bạn trong truy vấn phụ.
$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 )
);
Bạn cũng cần chỉnh sửa ssp.class.php
và thay thế tất cả các bản sao của FROM `$table`
với FROM $table
để loại bỏ dấu gạch ngược.
Đảm bảo rằng tất cả các tên cột là duy nhất, nếu không hãy sử dụng AS
để gán một bí danh.
LƯU Ý
Ngoài ra còn có github.com/emran/ssp
kho chứa ssp.class.php
nâng cao hỗ trợ các JOIN.
LIÊN KẾT
Xem jQuery DataTables:Sử dụng WHERE, JOIN và GROUP BY với ssp.class.php để biết thêm thông tin.