2016-12-29 2 views
0

Ich habe drei Tabellen mit dem Namen: Mitarbeiter, Produkte und bieten.Wie drei Tabellen mit sql, in Zend Framework beizutreten

Mitarbeiter Tabellenstruktur unter

id | employee_id | isid | ename| email | password |admin |practice| phone 

Gebot Tabellenstruktur

bid_id | product_id | employee_id | bid_amount | LastUpdate 

Produkttabellenstruktur

product_id |employee_id |name|type|brand|model |condition|about|verified|reserved_price 

Jetzt möchte ich eine Abfrage schreiben, um alle Werte von "Produkte" zu erhalten und "bid_id" "bid_amount" von "bid" -Tabelle. Dann Name des Mitarbeiters (ename) aus der Tabelle "employees". Wie schreibe ich SQL-Abfrage für das in Zend-Framework-Struktur? Zuvor habe ich eine Abfrage geschrieben, um alle "products" -Tabellenwerte und die entsprechenden "bid_id" - und "bid_amount" -Werte aus der Gebotstabelle zu übernehmen. Jetzt möchte ich den entsprechenden Angestelltennamen (ename) anzeigen. Also muss ich mich dem "Mitarbeiter" -Tisch anschließen. kann mir jemand helfen, dies zu tun? Meine vorherige Abfrage für alle "Produkt" -Tabellenwerte und "bid_id" "bid_amount" aus der Gebotstabelle ist unten. Es funktioniert perfekt.

public function fetchAllProductItems() { 
    $oSelect = $this->select() 
      ->setIntegrityCheck(false) 
      ->from(array("p" => "products","b" => "bid"), ('*')) 
      ->joinLeft(array("b" => "bid"), "b.product_id=p.product_id", array('bid_id','bid_amount')) 
      ->group('p.product_id') 
      ->having("p.verified = ?", "Yes"); 

    return $oSelect; 


} 

Antwort

0
return $this->select() 
    ->setIntegrityCheck(false) 
    ->from(['p' => 'products'],['*']) 
    ->joinLeft(['b' => 'bid'],'b.product_id=p.product_id', ['bid_id','bid_amount']) 
    ->joinInner(['e' => 'employees'], 'e.employee_id=b.employee_id',['ename']) 
    ->where("p.verified = 'Yes'") 
    ->group('p.product_id'); 

oder

return $this->select() 
    ->setIntegrityCheck(false) 
    ->from(['b' => 'bid'],['bid_id','bid_amount']) 
    ->joinInner(['p' => 'products'],'p.product_id=b.product_id',[ 
     'product_id', 
     'product_name' => 'name', 
     'product_type' => 'type', 
     'product_brand' => 'brand', 
     'product_model' => 'model', 
     //etc 
     ]) 
    ->joinInner(['e' => 'employees'],'e.employee_id=b.employee_id',[ 
     'employee_id', 
     'employee_name' => 'ename' 
     ]) 
    ->where("p.verified = 'Yes'"); 
+0

wenn i ersten verwendet, dessen Abrufen nur ersten Wert von Produkten, dessen Feld verifiziert ist ja. –