Ericson Willians
Ericson Willians

Reputation: 7845

How to insert a row if a value does not exist in another table?

Here's my query:

"INSERT INTO tbl_pedidos_fornecedors_produtos (pedido_id, prefeitura_id, fornecedor_id, produto_id) VALUES (".$pedido_id.", ".$_SESSION["id"].", ".$fornecedor_ids[$i]["fornecedor_id"].", ".$value->id.")"

How can I do this?

"INSERT INTO tbl_pedidos_fornecedors_produtos (pedido_id, prefeitura_id, fornecedor_id, produto_id) VALUES (".$pedido_id.", ".$_SESSION["id"].", ".$fornecedor_ids[$i]["fornecedor_id"].", ".$value->id.") WHERE ".$value->id." NOT IN (SELECT id FROM tbl_pedidos_produtos)"

Upvotes: 0

Views: 44

Answers (3)

Gouda Elalfy
Gouda Elalfy

Reputation: 7023

try this query:

insert into tbl_pedidos_fornecedors_produtos 
(pedido_id, prefeitura_id, fornecedor_id, produto_id) 
select * from (select '$pedido_id', '$_SESSION["id"]', '$fornecedor_ids[$i]["fornecedor_id"]', '$value->id') as temp 
WHERE $value->id NOT IN (SELECT id FROM tbl_pedidos_produtos)

Upvotes: 1

Jan Rydrych
Jan Rydrych

Reputation: 2258

Make two queries - SELECT ... tbl_pedidos_produtos to figure out if item is present and then INSERT tbl_pedidos_fornecedors_produtos if not

Upvotes: 0

SIDU
SIDU

Reputation: 2278

You need PHP to do the condition:

<?php
    $exist = $db->getVal('select 1 from tbl_pedidos_produtos where id=:id limit 1',
        [':id' => $value->id]);
    if ($!exsit) {
        $db->query('INSERT INTO tbl_pedidos_fornecedors_produtos ...', [...]);
    }

replace $db->getVal, $db->query with your proper db functions

Upvotes: 1

Related Questions