如何删除customer表中的数据重复项

时间:2016-05-03 09:40:18

标签: php mysql sql

我有一张表customer_stock_entries ..如果商品和供应商不可用,我想插入商品,如果商品和供应商可用,我想更新商品

table structure

我的表中的示例我有stock_supplier_name和数量。我想要做的是,如果股票供应商名称条目是新的,则将其插入表格中,如果条目已经存在,则删除“数量”列中的先前值并插入新值。

我坚持这个。请帮帮我

我尝试过这样的事情。

for ($i = 0; $i < count($stock_name); $i++) {
                                $count = $db->countOf("customer_stock", "name='$stock_name[$i]'");
                                if ($count == 0) {
                                    $db->query("insert into customer_stock(name,quantity) values('$stock_name[$i]',$quty[$i])");
                                    echo "<br><font color=green size=+1 >New Stock Entry Inserted !</font>";

                                    $db->query("insert into stock_details(stock_id,stock_name,stock_quatity,supplier_id,company_price,selling_price) values('$autoid','$stock_name[$i]',0,'$supplier','$cost[$i]','$sell[$i]')");


                                    $db->query("INSERT INTO customer_stock_entries(stock_id,stock_name, stock_supplier_name, quantity, company_price, selling_price, opening_stock, closing_stock, date, username, type, total, payment, balance, mode, description, due, subtotal,count1,billnumber) VALUES ( '$autoid1','$stock_name[$i]','$supplier','$quty[$i]','$cost[$i]','$sell[$i]',0,'$quty[$i]','$date','$username','entry','$total[$i]','$payment','$balance','$mode','$description','$due','$subtotal',$i+1,'$bill_no')");

                                } else if ($count == 1) {

                                    $amount = $db->queryUniqueValue("SELECT quantity FROM customer_stock WHERE name='$stock_name[$i]'");
                                    $amount1 = $amount + $quty[$i];
                                    $db->execute("UPDATE customer_stock SET quantity='$amount' WHERE name='$stock_name[$i]'");

                                    $db->query("INSERT INTO customer_stock_entries(stock_id,stock_name,stock_supplier_name,quantity,company_price,selling_price,opening_stock,closing_stock,date,username,type,total,payment,balance,mode,description,due,subtotal,count1,billnumber) VALUES ('$autoid1','$stock_name[$i]','$supplier','$quty[$i]','$cost[$i]','$sell[$i]','$amount','$amount1','$date','$username','entry','$total[$i]','$payment','$balance','$mode','$description','$due','$subtotal',$i+1,'$bill_no')");

谢谢

2 个答案:

答案 0 :(得分:0)

此问题的典型解决方案包括以下典型步骤:

  1. 使用选择查询检查库存供应商的记录是否存在,如果存在,请更新数量属性。
  2. 如果记录不存在,则将记录插入表中。
  3. 请求的示例代码:

    IF EXISTS(SELECT * FROM Users WHERE UserId = @UserId)
    BEGIN
        UPDATE TC_Users SET Salary = 25000 WHERE UserId = @UserId
    END
    ELSE
    BEGIN
        INSERT INTO TC_Users(UserId, Salary) VALUES(@UserId, 25000)
    END
    

    希望这会对你有所帮助。

答案 1 :(得分:0)

Hare是关于您的问题的一些信息:

主键

(避免重复数据):

始终在数据库表结构中使用主键,即将一列作为主键,以使其唯一,以便不能将重复值插入到记录中。

示例:例如,我有一个包含以下列的表作为id,用户名,密码,名称。现在为了避免重复数据,即我不希望别人使用相同的用户名注册,这意味着用户名列值应该是唯一的,所以我将我的用户名栏标记为主键。所以现在新的即将到来的成员都无法使用已在数据库中提供的相同用户名注册,即有人已使用该用户名注册。相反,他们需要使用唯一的用户名注册。

解决方案:

如果数据库中已存在quantity,则此处是更新supplier值的代码,如果不存在,则插入新记录。

$supplier_name = $_POST['supplier];
$query = mysqli_query($mysqli,"SELECT * FROM table");
$results = mysqli_fetch_array($query);
for ($i=0;$i<=count($results);$i++) {
//IF supplier is available in database
if ($results[$i]['supplier'] == $supplier_name) {
$query = mysqli_query($mysqli,"UPDATE table SET quantity=$quanity_new_value WHERE supplier=$supplier_name");
} else {
// If supplier is not available in database so it will insert new record
 $query = mysqli_query($mysqli,"INSERT INTO table (supplier, quanity, email) VALUES ($supplier_name, $quantity, $email)");
} 
}