2014-02-09 42 views
-1

表1:數不同和更新另一個表,其中postnr =「計數不同」

postnr 
    ------ 
    11111 
    11111 
    11111 
    22222 
    33333 
    33333 

表2:

postnr count 
    -------- ------- 
    11111  ? 
    22222  ? 
    33333  ? 
    44444  ? 

我想要做的就是用的計數更新表2從表中的每個postnr 1.

因此,在這種情況下,計數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

不確定您是否正在查找查詢。但使用下面的SQL查詢,你可以做同樣的事情。

update tab2 set 
count = 
(select count(postnr) 
from table1 
where postnr = tab2.postnr 
) 

看到一個演示小提琴這裏http://sqlfiddle.com/#!2/04d586/1

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; 
相關問題