2016-05-21 16 views
0

私は2つのテーブルを持っています。私は2つのテーブルを結合し、それらをユーザのテーブルの中に表示する必要があります。2つのテーブルを結合し、PHPとMySQLを使用してデータ配列をソートするクエリ

db_summary:

id  member_id  hit_type device_type 

1  20   1    IOS 

2  12   2    IOS 

3  20   3    Android 

4  14   4    Android 

5  12   3    IOS 

6  14   5    IOS 

hit_type列の値は、次の表のtype列にリンクされている上記の表から。

db_hit_type:db_summaryテーブルから

id  name  type 

1  Page  1 

2  Map   2 

3  Gallery  3 

4  Phone  4 

5  Web   5 
hit_type=1

がを第二のテーブルに定義されているpage hitを意味する場合。ここで私は結合して、両方のテーブルデータをフェッチする必要がありますmember idとしてそれらを並べ替え、次のユーザーのUIテーブルに表示する。

私はhit.Iの page hit,Map hit......と総番の番号は、すべてのデータをフェッチし、ユーザのテーブル構造ごとにそれらをソートする必要がありますどのように多くのメンバーID 20用のdb data.supposeを使用することにより、上記の表を埋めるために必要
sl no  member page Hit Map Hit Gallery Hit Phone Hit WebHit TOTAL 

。私を助けてください。

答えて

0

結果のデータを表示する方法や時期はわかりませんが、db_summaryテーブルから各ユーザーのヒット数をカウントするクエリを実行してから、結果データ。あなたはすべてのメンバーを更新する必要がある場合

$stmt = $db->prepare("SELECT * FROM `db_summary` WHERE `member_id` = :member"); 
$stmt->bindParam(':member', $memberid); 
$stmt->execute(); 

$hit = array(0,0,0,0,0); 

while ($row = $stmt->fetch(PDO::ASSOC)) 
{ 
    ++$hit[$row['hit_type']-1]; 
} 

echo 'Type 1 Hits: ', $hit[0]; 
echo 'Type 2 Hits: ', $hit[1]; 
echo 'Type 3 Hits: ', $hit[2]; 
echo 'Type 4 Hits: ', $hit[3]; 
echo 'Type 5 Hits: ', $hit[4]; 

は、あなたがそれぞれのメンバーIDをループループにそのすべてをラップすることができます

あなたはこのような何かを行うことができます。 DS AS db_summaryの両方からテーブルデータ

SELECT *を取得するクエリ以下

+0

をds.member_id各メンバーIDとヒット総数で 'ページヒット、マップヒット...... 'という数字は表示されません。これが私の基本要件です。これは少し補完的です。 – subhra

0

使用、db_hit_type AS DHT WHERE ds.hit_type = dht.type GROUP BYはどのように多くの私が実際に必要

0
SELECT dbs.*,dbht.name,dbht.id as dbHitId 
FROM db_summary as dbs 
LEFT JOIN db_hit_type as dbht 
ON dbs.hit_type=dbht.type 
ORDER BY dbs.member_id