2016-08-14 17 views
1

という2つのテーブルが全く同じ構造というtable_newというテーブルを持っています。それぞれ& table_oldです。テーブル構造は以下の通りである:ここではPHP MySqlは異なるテーブルの2つのカラムを比較して計算と出力を実行します

CREATE TABLE IF NOT EXISTS `table_new` (
    `Club_Number` int(11) default NULL, 
    `Club_Name` varchar(60) character set utf8 default NULL, 
    `Active_Members` int(11) default NULL, 
    `Goals_Met` int(11) default NULL, 
    `Last_Updated` date NOT NULL, 
    `id` int(6) NOT NULL auto_increment, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

は、私が何をしたいです:table_new.Active_Membersはtable_old.Active_Members OR table_new.Goals_Metよりも大きい場合

ステップ1. はtable_oldに対してtable_new比較しますtable_new.Club_Numberがtable_old.Club_Number

ステップ2 Iに等しいWHERE table_old.Goals_Metよりも大きいです

  1. table_new.Active_Membersとtable_old.Active_Members &結果をエコー
  2. table_new.Goals_Metとtable_old.Goals_Met &エコー正F何かが(結果がゼロよりも大きい)が見出されている、との間の差を計算します結果

PHPを使用してこれを達成する方法& MySQL?あなたの助けに感謝します。

+0

このようなクエリを実行するには、LEFT JOINとINNER JOINを使用します。 – Fafanellu

+0

INT(6)の '6'は何をしますか? (これはトリックの質問かもしれません) – Strawberry

答えて

0

このクエリを使用すると、このクエリは、PHPスクリプトの表示差

select convert(t_n.Active_Members - t_o.Active_Members, SIGNED) as 'Active Members', 
convert(t_n.Goals_Met - t_o.Goals_Met, SIGNED) as 'Goals Met' 
from table_new as t_n inner join 
table_old as t_o 
on t_n.Club_Number = t_o.Club_Number 
where t_n.Active_Members > t_o.Active_Members OR 
t_n.Goals_Met > t_o.Goals_Met; 
0

が必要となります。

$result=$db->query('SELECT tabn.`Active_Members` as active_new, tabo.`Active_Members` as active_old, tabn.`Goals_Met` as goals_new, tabo.`Goals_Met` as goals_old FROM `table_new` as tabn LEFT JOIN `table_old` as tabo ON tabn.`Club_Number`=tabo.`Club_Number` WHERE (tabn.`Active_Members` > tabo.`Active_Members`) OR (tabn.`Goals_Met` > tabo.`Goals_Met`)'); 

if(count($result) > 0) 
while($row = $result->fetch_assoc()){ 

echo 'Difference in Active_Members is: '.$row['active_new'] - $row['active_old']."\n"; 
echo 'Difference in Goals_Met is: '.$row['goals_new'] - $row['goals_old']."\n"; 

} 
0

あなたに参考になる出力

SELECT table_new.Active_Members, table_old.Active_Members, table_new.Goals_Met, table_old.Goals_Met FROM table_new 
INNER JOIN table_old ON table_new.id = table_old.id 
WHERE (table_new.Active_Members > table_old.Active_Members OR table_new.Goals_Met > table_old.Goals_Met) 
AND table_new.Club_Number = table_old.Club_Number 
関連する問題