PHP oder SQL für große data und Sub / Related Data Sets

Ich kann mir nicht vorstellen, dass ich der Erste oder der Letzte bin, um darüber zu fragen, aber ich konnte die Antwort nicht finden, indem ich suchte.

Ich habe einen großen datasatz von Aufträgen in SQL server. Ich muss jeden Auftrag mit jedem ihrer Werbebuchungen und jeder ihrer Zahlungen zurückgeben. Ich suche den effizientesting path, um diese data abzufragen und zu iterieren. Ich bin mit PHP / MSSQL, um die Aufträge zu ziehen, durchlaufen mit denen mit foreach und Abfrage für eine list von Elementen und Zahlungen wäre unglaublich ineffizient.

Ich habe darüber nachgedacht, eine Vereinigung zu schaffen, um einen massiven Dataset zu erstellen, der eine Reihe von Spalten hat, von denen eine eine Spalte ist, die angibt, welche Art von datasatz (Zahlung, line_item, order_data). Aber das scheint auch ziemlich ineffizient zu sein.

Dies ist ein Überblick über den process, mit dem ich gearbeitet habe:

<?php // query for orders $records = sql_function("select * from v_migration_orders"); $json_output = array(); foreach($record as $r){ $data['order']['org_code'] = $r['org_code']; $data['order']['po_number'] = $r['po_number']; ... // query for line items $data['order']['line_items'] = array(); $items = sql_function("select * from v_migration_line_items where invoice = ".sanitize_function($r['invoice'])); foreach($items as $i){ $line['line_item_type'] = $i['line_item_type']; $line['sku'] = $i['sku']; $line['legacy_id'] = $i['legacy_id']; ... array_push($data['order']['line_items'],$line); } // query for payments $data['order']['payments'] = array(); $payments = sql_function("select * from v_migration_payments where invoice = ".sanitize_function($r['invoice'])); foreach($payments as $p){ $pyt['Amount'] = $p['Amount']; $pyt['payment_type'] = $p['payment_type']; $pyt['Check_Number'] = $p['Check_Number']; ... array_push($data['order']['payments'],$pyt); } array_push($json_output,$data); } echo json_encode($json_output); 

Mit einem Fokus auf Effizienz, hoffe ich, dass jemand in der Gemeinschaft helfen kann, mich in die richtige Richtung hier zu stellen. Die Anzahl der Anrufe vom Webserver zum databaseserver ist dreifach, was ich möchte. Die Alternative, die ich mir vorstellen kann, ist, einen path zu finden, um sie alle in eine einzige Reise in die database zu stellen und haben PHP parsing die volle Antwort, sobald sie es empfängt.

Unten ist die Struktur der benötigten data, die ich in Sicht genommen habe. Beachten Sie, dass ich die Integer, Invoice als Schlüssel zum Mitmachen verwenden.

v_migration_orders:

  • line_type (Wert ist: "Order")
  • Org_Code
  • PO_Number
  • Invoice
  • Tax_Total
  • Order_Total
  • EMAIL
  • status
  • order_t_stamp
  • order_legacy_id

v_migration_orders_line_items:

  • line_type (Wert ist "line_item")
  • line_item_type
  • Invoice
  • sku
  • legacy_id
  • TITLE
  • quantity
  • unit_price

v_migration_orders_payments:

  • line_type (Wert ist "Zahlung")
  • Invoice
  • Amount
  • payment_type
  • Check_Number
  • Card_Processor
  • cc_message
  • card_type
  • cardholder_name
  • card_expiry
  • payment_token
  • payment_t_stamp

Danke im Voraus!