2017-09-19 1 views
0

Ich habe Buchungen Tabellen aus mehreren Ländern (zum Beispiel: book_uk) diese Tabellen enthalten Informationen über unsere Kunden in verschiedenen Ländern wie Name, Adresse usw. usw. Dann in meiner Tabelle Ergebnisse Ich habe die Ergebnisse aller Tests, die dieser Kunde hatte, die Information wird durch eine PIN-Nummer "verknüpft", zB 336699, diese Nummer wird sowohl in der Tabelle book_uk als auch in der Ergebnistabelle referenziert.Codeigniter JOIN - keine eindeutige Tabelle/Alias-Problem

Was ich tun möchte, ist alle Daten aus der Tabelle book_uk auszuwählen und dann jede Zeile mit der Ergebnistabelle zu verknüpfen (wo die PIN übereinstimmt), aber ich bekomme keine eindeutige Tabelle/Alias, hier ist mein Modellcode:

$database->select($new_country_columns) 
    ->from($country_table); 
$database->select($p_results_cols) 
    ->from($table); 
$database->join('p_results', $join, 'inner'); 

$database definiert ist früher im Modell

Erzeugt diesen Fehler:

Error Number: 1066 

Not unique table/alias: 'p_results' 

SELECT `book_uk`.`pin`, `book_uk`.`clinic`, `book_uk`.`dob`, `book_uk`.`gender`, `book_uk`.`country`, `book_uk`.`order_date`, `p_results`.`pin`, `p_results`.`code`, `p_results`.`name`, `p_results`.`result` FROM (`book_uk`, `p_results`) INNER JOIN `p_results` ON 'book_uk.pin = p_results.pin' 

Filename: C:/xampp/htdocs/projects/b2k-stat/system/database/DB_driver.php 

Line Number: 691 

, was ich wirklich tun müssen, ist wählen Sie Daten f rom book_uk und führe dann eine foreach-Schleife in der Ergebnistabelle aus und füge alle Daten mit passender PIN zum Ergebnis-Array hinzu. Ich habe keine Ahnung, wie das geht. Ich habe versucht, es mit einer foreach-Schleife zu durchlaufen. Ich habe auch versucht:

$database->select($new_country_columns) 
    ->from($country_table) 
    ->join('p_results', $join, 'inner'); 

Aber das gibt mir auch keine Ergebnisse, keine Hilfe? Vielen Dank im Voraus

Antwort

0

'p_results' 

von Ihrer

FROM 

Klausel entfernen, da Sie es direkt danach Beitritt.

0

Nicht sicher, ob dies der beste Weg ist, die Dinge zu tun, aber ich mein Problem gelöst, indem zwei Abfragen zu erzeugen und eine IF-Anweisung in einer foreach-Schleife läuft auf beiden Abfragen wie so:

$database->select($new_country_columns) 
    ->from($country_table); 
$query1 = $database->get()->result_array(); 
$p_results->select($p_results_cols) 
    ->from($table); 
$query2 = $p_results->get()->result_array(); 

foreach($query1 as $row){ 
    foreach($query2 as $rows) { 
     if($row['pin'] === $rows['pin']) { 
      $new_row = array_merge($row, $rows); 
      $query[] = $new_row; 
     } 
    } 
} 
return $query; 

Dieser Code hat mir ein Array der kombinierten Daten, die zur Anzeige meiner Ansicht benötigt wurden