thanx a lot dude

Pavel Ivanov-2 wrote:
> 
> If you have unique index on stock_tab.prod_batch_code then you can
> re-write your trigger as this:
> 
> INSERT OR REPLACE INTO stock_tab
>               (stock_id, prod_batch_code, stock_qty, stock_date)
> SELECT new.purchase_id+20000, new.prod_batch_code,
>               new.purchase_qty + ifnull(b.stock_qty, 0), new.purchase_date
>    FROM (SELECT new.prod_batch_code) a
>              LEFT JOIN stock_tab b ON b.prod_batch_code =
> a.prod_batch_code
> 
> 
> Pavel
> 
> On Tue, Jun 2, 2009 at 8:20 AM, robinsmathew <robinsmat...@hotmail.com>
> wrote:
>>
>> guys i ll clarify the problem
>> this is the purchase table here purchase id is PK
>>
>> purchase_id  prod_batch_code  vendor_type_code  purchase_qty
>>  purchase_date
>> -----------  ---------------  ----------------  ------------
>> -------------------
>> 1            1000             10000             100            
>> 2009-05-26
>> 18:19:27
>> 2            1001             10000             100            
>> 2009-05-26
>> 18:19:31
>> 3            1002             10000             100            
>> 2009-05-26
>> 18:19:35
>> 4            1003             10000             100            
>> 2009-05-26
>> 18:19:49
>>
>> this is the stock table here stock_id is PK and prod_batch_code is FK
>>
>> stock_id    prod_batch_code  stock_qty   stock_date
>> ----------  ---------------  ----------  -------------------
>> 20001       1001             105         2009-05-26 18:19:27
>> 20002       1002             100ps       2009-05-26 18:19:31
>> 20003       1003             100ps       2009-05-26 18:19:35
>> 20004       1003             100ps       2009-05-26 18:19:43
>> 20005       1002             100ps       2009-05-26 18:19:44
>> 20006       1001             100ps       2009-05-26 18:19:49
>> 20007       1000             85          2009-05-26 18:19:50
>> 20008       1000             85          2009-05-26 18:19:51
>>
>> i wrote a trigger
>> CREATE TRIGGER insert_stock_from_product
>>        AFTER INSERT ON purchase_tab
>>        BEGIN
>>        INSERT INTO stock_tab(stock_id, prod_batch_code, stock_qty,
>> stock_date)
>>        values (new.purchase_id+20000, new.prod_batch_code,
>> new.purchase_qty,
>> new.purchase_date );
>>        END;
>>
>> instead of inserting the same products repeatedly in the stock table i
>> jus
>> want the quantity as well as the dates to be updated . and wen i insert a
>> new product_batch_code to the purchase table its shuld be inserted in the
>> stock table also...
>>
>> Edzard Pasma wrote:
>>>
>>> Sorry, this was written down without testing. I see now that
>>> prod_batch_code must be the primary key, instead of stock_id, for the
>>> REPLACE to work as expected. Then some other expression must be used to
>>> fill stock_id, e.g. IF_NULL (s.stock_id, 200009). I also see that this
>>> message crosses Kees Nuyt's idea which may be more comfortable if you
>>> like
>>> to keep the SQL simple..
>>> Edzard
>>>
>>> --- edz...@volcanomail.com wrote:
>>>
>>> From: "Edzard Pasma" <edz...@volcanomail.com>
>>> To: "General Discussion of SQLite Database" <sqlite-users@sqlite.org>
>>> Cc: <sqlite-users@sqlite.org>
>>> Subject: Re: [sqlite] how can we solve IF EXIST in SQLite
>>> Date: Tue, 2 Jun 2009 04:19:33 -0700
>>>
>>> Hello, you are cleverer than you think. Your initial idea to use INSERT
>>> OR
>>> REPLACE might look like:
>>>
>>> INSERT OR REPLACE INTO stock_tab(stock_id, prod_batch_code, stock_qty,
>>> stock_date)
>>> SELECT
>>>     s.stock_id,
>>>     p.prod_batch_code,
>>>     IF_NULL (s.stock_qty, 0) + p.purchase_qty
>>>     DATETIME('NOW')
>>> FROM purchase_tab p
>>> LEFT OUTER JOIN stock_tab s
>>> ON s.prod_batch_code = p.prod_batch_code
>>> WHERE p.product_batch_code=1000
>>> /
>>> (assuming stock_id PRIMARY KEY)
>>>
>>> Best regards, Edzard
>>>
>>> --- engelsch...@codeswift.com wrote:
>>>
>>> From: Martin Engelschalk <engelsch...@codeswift.com>
>>> To: General Discussion of SQLite Database <sqlite-users@sqlite.org>
>>> Subject: Re: [sqlite] how can we solve IF EXIST in SQLite
>>> Date: Tue, 02 Jun 2009 12:46:58 +0200
>>>
>>> Hi,
>>>
>>> as far as I know, you cannot do what you want to do in pure SQL.
>>> However, perhaps someone cleverer can contradict me.
>>>
>>> You could first execute the update statement, check if there was a row
>>> which was updated using sqlite3_changes() (see
>>> http://www.sqlite.org/capi3ref.html#sqlite3_changes), and then issue the
>>> insert if there was none.
>>>
>>> Martin
>>>
>>> robinsmathew wrote:
>>>> hey thanx for the reply... u leave the things happening inside.. wat i
>>>> jus
>>>> wanna do is i wanna insert a new row to a table
>>>> the table will be like this
>>>> stock_id PK        product_id FK       quantity    stock_date
>>>> 10000                 1000                    10            28-05-2009
>>>> 10001                 1001                      5            27-05-2009
>>>>
>>>> and wen i insert a new row with values  NULL,   1000,   15,  
>>>>  30-05-2009
>>>> i dont want want it as a new recorde i jus want to update the first row
>>>> coz
>>>> its also having the same product id i jus want set the quantity = 10+15
>>>> and
>>>> the date new date that is 30-05-2009
>>>> and suppose if i insert row with different product_id it should be
>>>> inserted
>>>> as it is..
>>>>
>>>> Martin Engelschalk wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> what language is this? it certainly is not SQL or a "query".
>>>>> I suspect that you can not use "insert or replace" (see
>>>>> http://www.sqlite.org/lang_insert.html), because you look first for a
>>>>> record with prod_batch_code=1000, and if you do not find it you insert
>>>>> one with prod_batch_code = 1003.
>>>>> S,. it seems to me that you have to implement the logic in your
>>>>> application.
>>>>>
>>>>> Martin
>>>>>
>>>>> robinsmathew wrote:
>>>>>
>>>>>> hi am new to SQLite can anybody please tell me how this query can be
>>>>>> solved
>>>>>> in SQLite?
>>>>>>
>>>>>> IF EXISTS (SELECT prod_batch_code FROM stock_tab WHERE
>>>>>> prod_batch_code=1000)
>>>>>>         UPDATE stock_tab
>>>>>>         SET stock_qty=stock_qty+(SELECT purchase_qty ROM purchase_tab
>>>>>> WHERE
>>>>>> oduct_batch_code=1000 )
>>>>>>         WHERE prod_batch_code=1000
>>>>>> ELSE
>>>>>>         INSERT INTO stock_tab(stock_id, prod_batch_code, stock_qty,
>>>>>> stock_date) values (20009, 1003, 200,
>>>>>>         DATETIME('NOW') );
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> sqlite-users mailing list
>>>>> sqlite-users@sqlite.org
>>>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>> _______________________________________________
>>> sqlite-users mailing list
>>> sqlite-users@sqlite.org
>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>
>>>
>>> _______________________________________________
>>> sqlite-users mailing list
>>> sqlite-users@sqlite.org
>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>
>>>
>>> _______________________________________________
>>> sqlite-users mailing list
>>> sqlite-users@sqlite.org
>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/how-can-we-solve-IF-EXIST-in-SQLite-tp23828274p23831505.html
>> Sent from the SQLite mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> 
> 

-- 
View this message in context: 
http://www.nabble.com/how-can-we-solve-IF-EXIST-in-SQLite-tp23828274p23834137.html
Sent from the SQLite mailing list archive at Nabble.com.

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to