2016-08-08 7 views
2

Ich habe diese drei Tabellen, die Leistung in verschiedenen Fächern für drei Katze Serie darstellen:Wie wähle ich verwandte Daten aus verschiedenen Tabellen und verwenden Sie es, um Trend in MySQL und PHP zu zeigen?

CAT1 
adm_no eng mat bio che phy 
1111 90 87 89 74 92 
2222 65 87 54 65 87 
3333 96 95 98 58 56 
4444 58 28 88 74 85 


CAT2 
adm_no eng mat bio che phy 
1111 40 82 81 79 90 
2222 67 88 78 67 84 
3333 97 99 95 24 78 
4444 82 22 83 76 90 


CAT3 
adm_no eng mat bio che phy 
1111 80 45 86 74 96 
2222 95 87 56 65 83 
3333 46 97 84 58 87 
4444 78 23 80 74 83 

Ich mag die Leistung Trend in den Fächern für jeden Schüler bekommen. Zum Beispiel, wenn ich wünsche würde, um die Leistung Trend zu eng bekommen, dann wäre das Ergebnis in etwa so sein wird:

adm_no CAT1 CAT2 CAT3 
1111 90 40 80 
2222 65 67 95 
3333 96 97 46 
4444 58 82 78 

Wie würde ich in der Lage sein, diese mit MySQL und PHP zu erreichen? Zweitens und am wichtigsten, wie wäre es erreichbar, wenn die Anzahl der Tabellen nicht statisch ist? (es könnte zwei oder sogar vier sein).

+0

wird der Name der Tabellen immer dieser Konvention folgen? wie CAT1, CAT2, CAT3, CAT4? –

+0

Ja, nach cat3 sollte der nächste cat4 sein. – NdalilaTony

+0

Ok, überprüfe meine Antwort. Hoffe, es wird helfen –

Antwort

1

Im vorausgesetzt, Sie atleast cat1 haben. Die Abfrage ist im Grunde, was scaisEdge auf seiner Antwort zur Verfügung gestellt. Dies gibt Ihnen jedoch eine Idee, wie Sie es dynamisch mit PHP generieren können. Die folgende Funktion erstellt die Abfrage, die Sie verwenden können, um das gewünschte Ergebnis zu erhalten.

function buildQuery($subject) { 
    $select .= "select `cat1`.adm_no, `cat1`.`$subject` as CAT1"; 
    $from = ' from cat1'; 
    $i = 2; 
    while (mysql_num_rows(mysql_query("SHOW TABLES LIKE 'cat$i'"))) { 
     $table = "cat$i"; 
     $label = "CAT$i"; 
     $previousTable = 'cat'.($i-1); 
     $select .= ", `$table`.`$subject` as $label"; 
     $from .= " inner join $table on `$table`.adm_no = `$previousTable`.adm_no "; 
     $i++; 
    } 
    return $select.$from; 
} 
1

Sie innere verwenden shuold Verbindung zwischen tre drei Tabellen

select a.adm_no, a.eng as CAT1, b.eng as CAT2, c.eng as CAT3 
from table1 as a 
inner join table2 as b on a.adm_no = b.adm_no 
inner join table3 as c on a.adm:no = c.adm_no 
+0

Danke für die Informationen. Also, wie wäre es, wenn ich mir der Anzahl der Tabellen nicht sicher bin, dass die erzeugten Ergebnisse dynamisch sind. Ich beabsichtige, die verfügbaren Tabellen zu durchlaufen und danach eine entsprechende Abfrage zu erzeugen. – NdalilaTony

+0

Server-Seite können Sie eine Dinamic sql .. für die Tabelle erstellen, die Sie benötigen, und die zugehörige innere Verknüpfung hinzufügen – scaisEdge