Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

3 एक-से-कई तालिकाओं से नेस्टेड JSON

कुछ नमूना डेटा के साथ चलाने योग्य कोड:http://codepad.org/2Xsbdu23

मैंने 3 अलग-अलग SELECT का इस्तेमाल किया s अनावश्यक दोहराव से बचने के लिए। बेशक आपको $result . को अनुकूलित करना होगा आपके सटीक वांछित JSON प्रारूप में सरणी, लेकिन मुझे लगता है कि यह उतना कठिन नहीं है।

// assume $t1/2/3 will be arrays of objects
$t1 = 
SELECT     Table1.*
FROM       Table1 
WHERE Table1.ID = 111

$t2 = 
SELECT     Table2.*
FROM       Table2
WHERE      Table2.table1_ID = 111

$t3 = 
SELECT     Table3.*
FROM       Table2
INNER JOIN Table3 ON Table2.ID = Table3.table2_ID
WHERE      Table2.table1_ID = 111

function array_group_by( $array, $id ){
  $groups = array();
  foreach( $array as $row ) $groups[ $row -> $id ][] = $row;
  return $groups;
}

// group rows from table2/table3 by their parent IDs
$p2 = array_group_by( $t2, 'table1_ID' );
$p3 = array_group_by( $t3, 'table2_ID' );

// let's combine results:
$result = array();
foreach( $t1 as $row1 ){
  $row1 -> Table2_Objects = isset( $p2[ $row1 -> ID ]) ? $p2[ $row1 -> ID ] : array();
  foreach( $row1 -> Table2_Objects as $row2 )
    $row2 -> Table3_Objects = isset( $p3[ $row2 -> ID ]) ? $p3[ $row2 -> ID ] : array();
  $result[] = $row1;
}

echo json_encode( $result );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इस तरह 2 टेबल का चयन कैसे करें

  2. PHP के ऐडलैश और mysql(i)_escape_string में क्या अंतर है?

  3. पसंद और नापसंद के आधार पर अलग-अलग प्रविष्टियाँ दिखाएँ जो मेरे पास एक उपयोगकर्ता के साथ समान हैं

  4. Laravel 5 वाक्पटु जहाँ

  5. मैं विदेशीकी के साथ एक Django मॉडल कैसे बना सकता हूं जो कैस्केड को अपने बच्चों को नहीं हटाता है?