2016-08-08 7 views
2

私は3猫シリーズの様々な主題でパフォーマンスを表すこれらの3つのテーブルがあります。異なるテーブルから関連するデータを選択して、mysqlとphpの傾向を表示するにはどうすればいいですか?

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 

を私はすべての学生のための科目でのパフォーマンスの傾向を取得したいのですが。私はENGのパフォーマンス傾向を取得したいと思います場合たとえば、その後、結果はこのようなものになることでしょう。

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

どのように私は、この使用してMySQLとPHPを達成することができるだろうか?第二に、最も重要なのは、テーブルの数が静的でない場合には、どのように達成可能なのでしょうか? (それは2つまたは4つであってもよい)。あなたは、内部使用shuold

+0

表の名前は常にこの規則に従いますか? CAT1、CAT2、CAT3、CAT4のように? –

+0

はい、cat3の次にcat4が必要です。 – NdalilaTony

+0

私の答えを確認してください。それが助けてくれることを願って –

答えて

1

イムに参加します。この質問は基本的に彼の答えにscaisEdgeが提供したものです。しかし、これにより、PHPで動的に生成する方法がわかります。以下の関数は、あなたが望む結果を得るために使用できるクエリを構築します。

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

あなたは少なくともCAT1を持つことになりますと仮定TREの間の3つのテーブル

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

情報ありがとうございます。だから、生成される結果が動的であるようにテーブルの数がわからない場合はどうなりますか?利用可能なテーブルをループし、その後適切なクエリを生成するつもりです。 – NdalilaTony

+0

サーバー側で必要なテーブル用にdinamic sql ..を構築し、関連する内部結合を追加することができます – scaisEdge

関連する問題