0

私は3つのテーブルを持っています、3つの結果の出力を組み合わせて、ここに結果を表示したいのは私のテーブル構造とクエリです

table_campaign-IDは自動インクリメントです

id         banner                views_left     packages

1          A1                       555                5
2          A1                       527                5
3          B1                       580                98
4          C1                       293                69

table_packages-Idは自動インクリメントです

id      name    special     
1       India       IND
2       Aus         Australia 
3       Pak         Pakistan

tablepage(table_campaignのuriとbannerは同じです)

 id     uri     views   
 1      A1       54
 2      B1       94
 3      C1       38

table_campaignで同様のタイプのすべてのバナーの合計を確認したいのですが、tablepageで確認し、table_campaignの合計ビューがtablepageビューより少ない場合は、結果が表示されます。

私は3つの独立したクエリを試しました。tablepageのビューがtable_campaignのviews_left列の結合されたビューよりも少ない場合に結果が表示されるか、結果が表示されないようにする方法を教えてください。この基準を満たすいくつかの結果からランダムな結果を表示したい

$res23 = sql_query("SELECT sum(views_left) as num from table_campaign where banner!='{$client['uri']}'  " );
    $row23 = sql_fetch_array($res23);
    $stats['views_left'] = $row23['num'];


$res = sql_query("SELECT * from `table_packages` where special='{$client['location']}'");
$row = sql_fetch_array($res);
$packages=$row['id'];
{



$res2 = sql_query("SELECT * from `table_campaign` banner  where packages='{$packages}' order by  views_left   desc limit 4");{
while($row = sql_fetch_array($res2)) {
$banner1= $row['banner'];
$views_left = $row['views_left'];
$output4 .= '<table width="100%"><tr><td style="text-align:left;"><a href="'.$banner1.'">'.$banner1.'</a></td><td style="text-align:right;">'.$views_left.'  '.$stats['views_left'].'</td></tr></table>
';}

ass(array('title'=>t('abc'), 'content' => '<div class="toolbar">'.'<div style="border:0px solid #B2BCA7;margin-bottom:20px;"><div style="padding: 7px; position: relative;">'.$output4.'</div>'));
}

このコンテンツを見せたかっただけです

table_campaignの合計すべての行から残ったビューの合計からテーブルページビューを引いたもの

私のtablepageuri列とtable_campaignバナー列は同じですが、tablepageではuri列は一意であり、1回しか表示できませんが、table_campaignバナー列では複数回表示される可能性があるため、table_campaignのすべての行のviews_leftを追加してtablepageと比較しますviews列。その特定のURIのviews列がviews_left列の合計よりも大きい場合、私が示したように出力が表示されます。私は今とてもはっきりしていると思います

4

1 に答える 1

0

これが私がそれを書く方法です:

SELECT sum(table_campaign.views_left) - tablepage.views  FROM table_campaign,tablepage where tablepage.uri=table_campaign.banner group by table_campaign.banner;
于 2012-04-25T15:52:12.220 に答える