表1:
postnr
------
11111
11111
11111
22222
33333
33333
表2:
postnr count
-------- -------
11111 ?
22222 ?
33333 ?
44444 ?
我想要做的是用表1中每个postnr的计数更新表2。
因此,在这种情况下,11111的计数为3,对于22222,它将为1,对于33333,它将为2。
这些表位于不同的数据库中,这是我徒劳的尝试,但它没有在表2中产生任何计数......
$pdo1 = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_NAME_PROFILDATA, DB_USER, DB_PASS);
$pdo1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$pdo2 = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_NAME, DB_USER, DB_PASS);
$pdo2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
try {
foreach ($pdo1->query("SELECT
count(DISTINCT postnr) as pstnr,
postnr as postnumret
FROM XXX") as $row) {
$count = $row['pstnr'];
$postnumret = $row['postnumret'];
$result = $pdo2->prepare("UPDATE YYY
SET a1_ant = '$count'
WHERE postnummer = $postnumret");
$result->execute();
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
我正在使用php,pdo和mysql。
答案 0 :(得分:0)
您可以通过查询执行此操作,无需记下代码。 看看我为你做的this sample。
select val, count(val) from t1 group by val;
insert into t2
select val as vals, count(val) as int from t1 group by val;
select * from t2;
答案 1 :(得分:0)
不确定您是否在寻找查询。但是使用下面的sql查询你也可以这样做。
update tab2 set
count =
(select count(postnr)
from table1
where postnr = tab2.postnr
)
在此处查看演示小提琴http://sqlfiddle.com/#!2/04d586/1