查询连接两个表并使用PHP和MySQL对数据数组进行排序

时间:2016-05-21 12:29:23

标签: php mysql sorting join

我需要一个帮助。我有两个表我需要加入两个表并在用户表中显示它们。我正在解释下面的表结构。

  

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:

id      name      type

1       Page        1

2       Map         2

3       Gallery     3

4      Phone        4

5      Web          5

如果db_summary表示在第二个表中定义的hit_type=1,则从page hit表中。在这里,我需要通过加入并按照member id对它们进行排序来获取两个表数据,以显示在以下用户的ui表中。

sl no     member   page Hit   Map Hit   Gallery Hit  Phone Hit  WebHit TOTAL

我需要使用db data.suppose为成员标识20填充上表,其中page hit,Map hit......的nos数和hit的总数是多少。我需要获取所有数据并将它们排序为每个用户的表结构。请帮助我。

3 个答案:

答案 0 :(得分: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的循环。

答案 1 :(得分:0)

使用以下查询获取两个表数据

SELECT * FROM db_summary AS ds,db_hit_type AS dht WHERE ds.hit_type = dht.type GROUP BY ds.member_id

答案 2 :(得分: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