不知道是不是之前帖子发的板块没对,没人理,发这里试试。还没人理就算了。
一、表:
Tb-A,(id,type,number,uid)
Tb-B,(id,number)
其中Tb-B的id=Tb-A的uid,两张表的id都是唯一,自增长。
二、要求:
1、A表通过post批量提交一批id给后台删除对应记录,后台通过$id = is_array($_POST['id'] ? implode(',', $_POST['id'] ) : '';来获取id。
2、删除之前需要根据提交过来的id找到A表对应的type、number和uid。
3、type有两种值“出库”和“入库”,如果type=出库,就在a.uid=b.id前提下在B表number字段加上A表的number值;如果为入库,则减去A表的number。求代码,普通PHP的和thinkphp的都行。谢谢大神

解决方案 »

  1.   

    为什么要  implode呢如果是多个值的话,可以直接拿来用数组遍历for(){}
    1、select type,number,uid from a 
    2、if()else{}  判断type
         执行  增加,减少  where  id = (最好是在循环中少写sql
    等楼下
      

  2.   

    UPDATE TBB, TBA SET items.number=TBB.number + if(TBA.type='入库', TBA.numbe, -TBA.number)
       WHERE  TBB.id=TBA.uid and TBA.id in ($id);
    DELETE FROM TBA WHERE id in ($id);
      

  3.   

    先查询
    select * from A where id in ($id);通过循环构造下边的sql,用来更新
    WHEN $uid THEN number+$number
    同时 把$uid同样做成逗号分隔的格式更新
    UPDATE B
        SET number = CASE id
            WHEN uid1 THEN number+123
            WHEN uid2 THEN number+456
            WHEN uid3 THEN number+789
        END
    WHERE id IN ($uid)删除
    DELETE FROM A WHERE id IN ($id);这个地方
    WHEN uid1 THEN 123 
    WHEN uid1 THEN number+123
    增加的
    是否行得通 我还没测试过