Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách nối hai bảng với ssp.class.php

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có nên sử dụng kiểu dữ liệu datetime hoặc timestamp trong MySQL không?

  2. Cách tính toán nhiều đường trung bình động trong MySQL

  3. Cập nhật lược đồ bảng mà không ảnh hưởng đến dữ liệu trong Laravel

  4. CƠ SỞ DỮ LIỆU DROP của MySQL

  5. làm thế nào để lưu các thẻ (từ khóa) trong cơ sở dữ liệu?