使用PHP和MySQL将信息从一个表传输到另一个表

时间:2013-12-16 09:31:52

标签: php mysql sql

我有一个数据库 my_db ,其中有两个表 t1 t2

t1 有两列 ID count ID 是一些整数的列表,例如1,3,4,6,7,8,9和 count 默认为全0。

t2 还有两列, ID2 ,其中有一个整数列表,与 t1 <中 ID 的整数列表相同/ strong>即可。但是,它们可能重复或可能不存在。第二列包含一些值,这对这个问题并不重要。澄清: ID2 可以是1,1,3,4,3,1,9,8,7,7,7。

现在,我需要做的是 t1 中的每个 ID 我需要填写 count ,即出现次数 t2 中的 ID ID2

运行循环遍历 ID2 中的所有值,并且每次在相应的 count 中递增1应该这样做。但是我无法编写代码,不熟悉php和sql。我可以在一张桌子上工作。如何跨多个工作?

5 个答案:

答案 0 :(得分:3)

也许你可以尝试MySQL更新加入?

UPDATE t1 
       LEFT JOIN (SELECT id2, 
                         Count(1) AS num 
                  FROM   t2 
                  GROUP  BY id2) ref 
              ON t1.id = ref.id2 
SET    t1.count = ref.num 

如果我错了,请纠正我。

答案 1 :(得分:2)

你在找这个:

select t1.id,count(t2.id) as total_record_in_t2
from t1
     left join t2 on (t1.id=t2.id)
group by t1.id;

SQL Fiddle Example - Click to See

答案 2 :(得分:2)

我理解你的问题是,你需要通过查看表t1中的ID来计算表t2中的所有ID,然后你想在表t1的count列中插入所有ID的计数。

<?php 

$query = mysql_query("SELECT * from t1");
while($record = mysql_fetch_array($query )) {

$query2 = mysql_query("SELECT COUNT(*) from t2 WHERE id='".$record['ID']."'");
$fetch = mysql_fetch_array($query2);
$count = $fetch['COUNT(*)'];

$query3 = mysql_query("UPDATE t1 SET count='".$count."' WHERE id='".$record['ID']."'");

}

?>

如果您收到任何错误。你可以告诉我。

希望它适合你。

由于

答案 3 :(得分:2)

另一个答案(带子查询)

update d1
set d1.count_d1 = (select count(d2.id)
                   from d2
                   where d2.id = d1.id group by d1.id)

SQL Fiddle

答案 4 :(得分:1)

这是sql部分。 首先得到t2中ID2的出现次数:

select id2, count(*) from ts group by id2;

然后遍历结果并更新t1:

update t1 set count = $value where id1 = $id2