In the form of table-update of rows based on the selection of the checkbox

Hi all

I have a tabular layout with line selector. I need to update manually checked columns, how would write a process audited records updated?

Something like this:
BEGIN     
     FOR i in 1..apex_application.g_f01.count LOOP

          IF apex_application.g_f01(i) is not null THEN
               UPDATE TEST_USERS
                    set USER_ID = :P14_TO
               WHERE rowid = :APEX$ROW_ID;
               COMMIT;
          END IF;
     END LOOP;
END;
Thank you very much.

You can refer to the line that you want to process through the value stored in the box.

If you use apex_application.g_f01 (i) to make reference to the line and you want to update the row based on the ROWID in your request, your SQL query should have the box as follows:

apex_item. CheckBox2 (1, rowid)

Then your PLSQL process would be like this:

BEGIN
     FOR i in 1..apex_application.g_f01.count LOOP

          IF apex_application.g_f01(i) is not null THEN
               UPDATE TEST_USERS
                    set USER_ID = :P14_TO
               WHERE rowid = APEX_APPLICATION.G_F01(i);
               COMMIT;
          END IF;
     END LOOP;
END;

I hope this helps.

Cheers, Pete

Tags: Database

Similar Questions

  • In the form of table-update a column based on the other

    Greetings,

    I want to update a column based on the value of another column in a tabular presentation. What should I use? Calculation or validation process?

    -Vatsa

    Yes, get rid of the update of "pims_component" - this is the cause of the error table mutation - and simply set

    : new.state_ind: = Ls_state;

    CITY

  • Update a row based on a line from another table

    Hello

    I have two tables that have the same field, but with a different name.


    CREATE TABLE FAVE_CODE2_NEW_JOIN
    (
    VARCHAR2 (5 BYTE) BANKID NOT NULL,.
    CUSTOMERID VARCHAR2 (12-BYTE) NOT NULL,
    SIXID VARCHAR2 (12-BYTE) NOT NULL,
    FAVCODE VARCHAR2 (13 BYTE),
    IDX NUMBER (5),
    DEFAULTT NUMBER (1)
    )
    TABLESPACE PORTFOLIO_FAVORITE
    PCTUSED 0
    PCTFREE 10
    INITRANS 1
    MAXTRANS 255
    STORAGE)
    64K INITIALS
    ACCORDING TO 1 M
    MINEXTENTS 1
    MAXEXTENTS UNLIMITED
    PCTINCREASE 0
    DEFAULT USER_TABLES
    )
    LOGGING
    NOCOMPRESS
    NOCACHE
    NOPARALLEL
    MONITORING;




    CREATE TABLE SUBSCRIPTION
    (
    SUBSCRIPTIONID RAW (16) NOT NULL,
    APPID VARCHAR2 (64 BYTE) NOT NULL,
    VARCHAR2 (64 BYTE) DEVICE ID,
    SUBSCRIBERID NUMBER NOT NULL,
    TIME_REGISTERED TIMESTAMP (6) DEFAULT SYSTIMESTAMP NOT NULL,
    TIME_LAST_USED TIMESTAMP (6) DEFAULT SYSTIMESTAMP NOT NULL,
    SUBSCRIPTION_TYPE VARCHAR2 (30 BYTE) NOT NULL,
    SUBSCRIPTION_INFO VARCHAR2 (512 BYTE)
    )
    TABLESPACE PORTFOLIO_FAVORITE
    PCTUSED 0
    PCTFREE 10
    INITRANS 1
    MAXTRANS 255
    STORAGE)
    64K INITIALS
    ACCORDING TO 1 M
    MINEXTENTS 1
    MAXEXTENTS UNLIMITED
    PCTINCREASE 0
    DEFAULT USER_TABLES
    )
    LOGGING
    NOCOMPRESS
    NOCACHE
    NOPARALLEL
    MONITORING;



    SUBSCRIPTION_INFO in SUBSCRIPTION is equal to SIXID in FAVE_CODE2_NEW_JOIN. They have the same value

    In the FAVE_CODE2_NEW_JOIN table, there is also a class FAVCODE.
    Now, I want to know the record of VE_CODE2_NEW_JOIN that have the same sixid as SUBSCRIPTION_INFO in SUBSCRIPTION and then replace this with the value SUBSCRIPTION_INFO in FAVCODE


    Some examples of the two tables:


    SUBSCRIPTION:

    B31E5F5D3CB6 RIe9pnbe7BtA8IuQ BB2-58CA815F9958 21 2012-01-10 19:18:39 2012-01-11 12:24:04 FT FSB0650444
    010FB3AE74AE RIe9pnbe7BtA8IuQ 845-AD375E95ED90 21 2012-01-12 08:31:47 2012-01-24 08:53:09 FT FSB0650444
    6119E731A26F RIe9pnbe7BtA8IuQ 76 113 a-DAD2E359BF3F 2012-01-04 00:25:05 2012-01-19 16:17:21 FT FSB0632948


    FAVE_CODE2_NEW_JOIN:

    08999 191111111111 FSB0650444 SWB0553263 11 0

    As you can see they both the same "FSB0650368", but I want to replace this code with the FAVCODE corresponding to FAVE_CODE2_NEW_JOIN which is "SWB0553263".

    I hope you got what I mean, please tell me to explain more if you have problems to understand what I mean.

    Thanks in advance!

    / Louis

    Like this

    update subscription a
       set a.subscription_info =
           (
              select b.favcode
             from fave_code2_new_join b
            where b.sixid = a.subscription_info
           )
     where exists
           (
              select b.favcode
             from fave_code2_new_join b
            where b.sixid = a.subscription_info
           )
    
  • Problem updating multiple rows in the table using subquery

    Hi everyone, I can't update multiple lines with a subquery. Here is the configuration:
    create table mytable (
    col_a number primary key,
    col_b number,
    col_c number,
    col_d number);
    
    insert into mytable values (1 ,1,1,15);
    insert into mytable values (2 ,1,2,7 );
    insert into mytable values (3 ,1,3,11);
    insert into mytable values (4 ,1,4,23);
    insert into mytable values (5 ,1,5,14);
    insert into mytable values (6 ,2,1,50);
    insert into mytable values (7 ,2,2,41);
    insert into mytable values (8 ,2,3,13);
    insert into mytable values (9 ,2,4,12);
    insert into mytable values (10,2,5,19);
    insert into mytable values (11,3,1,10);
    insert into mytable values (12,3,2,92);
    insert into mytable values (13,3,3,81);
    insert into mytable values (14,3,4,17);
    insert into mytable values (15,3,5,66);
    insert into mytable values (16,4,1,54);
    insert into mytable values (17,4,2,41);
    insert into mytable values (18,4,3,22);
    insert into mytable values (19,4,4,24);
    insert into mytable values (20,4,5,17);
    For this example, by using an update statement (or merge if this is better), I mean set values for col_d where col_b = 3 equal to that of the col_d where col_b = 1 and col_c equal between them. Results should resemble the following after the update:
    col_a col_b col_c col_d
    1     1     1     15
    2     1     2     7
    3     1     3     11
    4     1     4     23
    5     1     5     14
    6     2     1     50
    7     2     2     41
    8     2     3     13
    9     2     4     12
    10    2     5     19
    11    3     1     15
    12    3     2     7
    13    3     3     11
    14    3     4     23
    15    3     5     14
    16    4     1     54
    17    4     2     41
    18    4     3     22
    19    4     4     24
    20    4     5     17
    I see her there within my reach using this query, where I want to put b_col_d = a_col_d, but miss me something, this query returns too many rows when it is used in the update statement.
    select * from (
      select col_a as a_col_a, col_b as a_col_b, col_c as a_col_c, col_d as a_col_d
      from mytable
      where col_b = 1
      ) a, (
      select col_a as b_col_a, col_b as b_col_b, col_c as b_col_c, col_d as b_col_d
      from mytable
      where col_b = 3
      ) b
    where a.a_col_c = b.b_col_c
    Update column_d set mytable = (select? where?)

    Can someone help me get there? I use 10 gr 2.

    Thank you!
    Mark

    I hope that's what you're looking for:

    SQL > UPDATE mytable myt1
      2  SET    col_d = ( SELECT myt2.col_d
      3                   FROM   mytable myt2
      4                   WHERE  myt2.col_b = 1
      5                   AND    myt1.col_c = myt2.col_c
      6                 )
      7  WHERE  col_b = 3
      8  AND    EXISTS
      9         ( SELECT NULL
     10           FROM   mytable myt2
     11           WHERE  myt2.col_c = myt1.col_c
     12         )
     13  ;
    
    5 rows updated.
    
    SQL > SELECT * FROM mytable ORDER BY col_a;
    
                   COL_A                COL_B                COL_C                COL_D
    -------------------- -------------------- -------------------- --------------------
                       1                    1                    1                   15
                       2                    1                    2                    7
                       3                    1                    3                   11
                       4                    1                    4                   23
                       5                    1                    5                   14
                       6                    2                    1                   50
                       7                    2                    2                   41
                       8                    2                    3                   13
                       9                    2                    4                   12
                      10                    2                    5                   19
                      11                    3                    1                   15
                      12                    3                    2                    7
                      13                    3                    3                   11
                      14                    3                    4                   23
                      15                    3                    5                   14
                      16                    4                    1                   54
                      17                    4                    2                   41
                      18                    4                    3                   22
                      19                    4                    4                   24
                      20                    4                    5                   17
    
    20 rows selected.
    

    Thank you very much for providing the sample data in a format that is easy to consume form, as well as the expected results.

  • Problem updated 16 rows, it updates all rows in the table

    I tried to update of 16 ranks with AL as the name of divion with the script as below:

    Update wire_center set a.wg_id = '63'
    where EXISTS (select b.div_name from wire_center, title b, area c, ns_workgroups d).
    where B.DIV_NAME =' al ' AND a.dis_id = c.dis_id and b.div_id = c.div_id and d.wg_id = a.wg_id);

    When I run it, it updates all rows in the table.

    However when I run the select subquery, it returns 16 ranks.

    It seems where EXISTS is the problem. If I exist, it gave me error ora-00936.

    How to fix? Need urgent help please. DB is 10g.

    Thanks in advance.

    If I understand correctly what you want, you must not include wire_center once again in the second select (in your clause).
    The second selection has no relationship to the table you're updating, so because select the second returns 16 rows, it is always set to true will. For each line. If all the rows will be updated.

    Instead of

    Update wire_center a set a.wg_id='63'
    where EXISTS (select b.div_name from wire_center a, division b, district c, ns_workgroups d
    where B.DIV_NAME='AL' AND a.dis_id=c.dis_id and b.div_id=c.div_id and d.wg_id=a.wg_id );
    

    Try this:

    Update wire_center a set a.wg_id='63'
    where EXISTS (select b.div_name from division b, district c, ns_workgroups d
    where B.DIV_NAME='AL' AND a.dis_id=c.dis_id and b.div_id=c.div_id and d.wg_id=a.wg_id );
    

    Published by: big on 29-dec-2010 14:27

  • When possible in Oracle Forms to insert a second line based on 1st row, so why not in the ADF?

    Mr President

    When possible in Oracle Forms to insert a second line based on 1st row, so why not in the ADF?

    The user just enter data in the Module of sales in one line of a Bill as below

    and it is displayed in two rows in financial Module.like below how to proceed in the ADF.

    You can see that invoice line contains the sales tax and the gross sales amounts, then it is posted to the financial Module above two lines.

    How to make ADF

    Respect of

    What I realized, this is:

    -You have a table in you screen.

    -You call CreateInsert 2 times to create 2 rows at the same time.

    -You will enter value in a specific column (c1) line1

    Looking for the value that you entered in row1 can be completely copied in the same column (c1), but in line2. is this correct?

    If so try to do the following:

    1. in the table inputText (c1) column set autoSubmit = true and setValueChangeListener to a method in backbean

    
           
    
    

    2. in the inputTextValueChangeListener method to write this code

      public void inputTextValueChangeListener(ValueChangeEvent valueChangeEvent)
      {
        DCIteratorBinding tableIter = (DCIteratorBinding) BindingContext.getCurrent().getCurrentBindingsEntry().get("tableIteratorName");// write table iterator name from pageDef.
        for (int i = 0; i < tableIter.getViewObject().getEstimatedRowCount(); i++)
        {
          ViewRowImpl myRow = (ViewRowImpl) tableIter.getRowAtRangeIndex(i);
          EntityImpl entityImpl = myRow.getEntity(0);
          if (EntityImpl.STATUS_NEW == entityImpl.getEntityState())
          {
            System.out.println("New row found");
            myRow.setAttribute("AttributeName", valueChangeEvent.getNewValue());// write attribute name
          }
        }
      }
    

    3 - Add inputText id in the partialTrigger table

    
    

    4 - pageDef. Set of table iterator rangeSize = "-1".

  • The two problems with sub form of table, associated with check boxes

    Hi all -
    Jari already helped me thereby once last week, but I'm running into some new questions.

    http://Apex.Oracle.com/i/index.html
    workspace: Leppard
    username: Guest
    PW: app_1000
    Application: MyTestApp

    Maybe I need to split these into two questions, if so just let me know.

    Question 1: On the first tab (tab 1 report) I have a simple tabular presentation based on the EMP table. The column of the box on the far right, when checked restores the Ename column readonly. The problem is that it only works one way. Unchecking the checkbox is not cancel the read-only.

    It is javascript code that I have on the page:
    function test(pThis) {
     //get the current row index on change
     var currIndex = $('input[name="'+pThis.name+'"]').index(pThis);
    
     // check current items value (return value of lov)
     if (pThis.value=='Y') {
      $('input[name="f02"]')[currIndex].style.backgroundColor = "LightGrey";
      $('input[name="f02"]')[currIndex].readOnly=true;
    }
    else if (pThis.value=='N') {
      $('input[name="f02"]')[currIndex].style.backgroundColor = "Red";
      $('input[name="f02"]')[currIndex].readOnly=false;
    }
    }
    The attribute of the element on the checkbox column is
    onClick="javascript:test(this);" 
    (It seems to work although I use onClick or onChange so I don't know if that makes a difference).

    But the main problem is that the code does not recognize the value of "n" in the column. I checked with firebug and columns I have untick are definitely on 'n', but I can't get javascript code to recognize this value. Even if I take the "ElseIf" code and just change the first part to (pThis.value ==' no) still does not work. There seems to be something with the value "n" recognize themselves do not, but I can not understand.

    Question 2: on the second tab - tab report 2. The same report but this time, I use a javascript character counter similar to that described in the sample application of the Dene (page 276 > http://apex.oracle.com/pls/otn/f?p=31517:276:19207673535900:NO). The counter of characters on the Ename field include javascript and an expression of HTML on the Ename column. The counter works fine, but now, the javascript code to make the column readonly work over all.

    Any ideas on these are much appreciated!

    Thanks in advance,
    John


    • Please please understand what HTML is generated and how to inspect. Once you do this, you can easily eliminate many problems with selectors not seeming to work. A text box is not an input for example element.
    • Boxes rely on the checked, not the value property. Apex circumvents this by creating a hidden extra element which will get the value based on the checked property of the visible checkbox
    • Do not use these horrible onchange and onclick attributes :( Use a dynamic action or jQuery to bind events.
    • Do not apply a style via javascript. Use CSS for this drive as with jQuery, you can easily add, remove, or toggle the classes too. And if you know jQuery selectors, you can understand css selectors because they are substantially the same.
    • I don't know why people insist on using rowIndex or substringing ID. I find it unnecessary and more complex that the alternative (crosses with jQuery)
    • The difficulty also in things into action through pagination. Running on just the visible page it of a trifle, but through paging requires more work than just check "fire on loading the page" is not enough. I'm sure you'd want your ENAME either red or gray column and readonly as soon as the page is loaded, and not when you start typing in the box...

    Form 1 tab: copied to Page 12 and made my changes here:_


    • OnChange on ENAME. This removed. No idea why you would need it there seems a crutch for not having the field in the desired state when the page is loaded.
    • OnClick on CHECKBOX. Removed what I hate these attributes. Replaced by a dynamic action.
    • Dynamic action "checkbox: ENAME readonly value."

      • Event: After refresh
      • Selection type: region
      • Region: Form of tab 1
      • No condition
      • Scope of the event: static
      • Real Action

        • Run the JavaScript Code
        • Fire on loading the Page: YES
        • Code:

          //at page load and after each region refresh:
          //each: check all checkboxes and set readonly on ename accordingly
          //click: when the checkbox changes, change ename accordingly
          $("td[headers='CHECKBOX'] input[type='checkbox']:visible")
          .each(function(){checkReadonly(this);})
          .click(function(){checkReadonly(this);});
          



  • Page > function and global variables declaration

    function checkReadonly(pCheck){
       var lCheck = $(pCheck);
       lCheck.closest("tr")
       .find("td[headers='ENAME'] input:visible").each(function(){
          $(this).prop("readonly", lCheck.prop("checked"));
       });
    };
    

  • Page > CSS Inline

    td[headers='ENAME'] input{
    background-color: red;
    }
    td[headers='ENAME'] input[readonly]{
    background-color: lightgrey;
    }
    

    CSS works so much better for this than the application of style through js...

  • Form 2 tab: copied to Page 13 and made my changes here:_


    • OnChange on ENAME. This removed. No idea why you would need this.
    • OnClick on CHECKBOX. Removed what I hate these attributes. Replaced by a dynamic action.
    • Dynamic action: identical to page 12, just modified trigger area
    • Changed input to TEXTAREA when it is required:
    • Page > function and global variables declaration

      function checkReadonly(pCheck){
         var lCheck = $(pCheck);
         lCheck.closest("tr")
         .find("td[headers='ENAME'] textarea:visible").each(function(){
            $(this).prop("readonly", lCheck.prop("checked"));
         });
      };
      

    • Page > CSS Inline

      td[headers='ENAME'] textarea{
      background-color: red;
      }
      td[headers='ENAME'] textarea[readonly]{
      background-color: lightgrey;
      }
      

    • The f_set_counter function, I changed a bit: there are 2 straps too, put a semicolon at the end of each line.
      -Change $x (node) .value $s (node, value) and $v (node)
      -changed $x (node) .innerHTML to $(node) .text)
      I know: it worked. I like this better. OCD? :/

    function f_set_counter(pThis,pLength,pMaxLength,pReset)
    {
       if (pLength>pMaxLength){
          alert('The maximum length of '+pMaxLength+' exceeded.');
          $s(pReset, $v(pReset).substring(0,pMaxLength));
          $("#"+pThis).text(pMaxLength);
       }else{
          $("#"+pThis).text(pLength);
       };
    };
    

    Published by: Tom on February 15, 2013 12:48
    Made a mistake in the case of dynamic action :->, click after refresh!

  • Apex 4.0: In the form of table: how to make reference to the elements?

    Hello
    I have a tabular layout with a certain query. A column in the query (say comm, is not displayed. This column is required in the table

    When a new row is added in the form of tables, I want to add a (complex) value for this column hidden by default.

    I want to add a process (before submitting) to the page.
    How can I make reference to this particular point?


    : P23_COMM: =...

    does not work. It is a column in the query, not a page element.

    Any help appreciated.
    Sincere friendships Erik

    Loop over the hidden PK table, identification of the new line (by finding with PK NULL table th eone) and assign the hidden item corresponding

    Assumung 01 is the primary key column table (use firebug to check this) and 05 is the hidden field

    BEGIN
      FOR i IN 1..APEX_APPLICATION.G_F01.COUNT
      LOOP
         --Identify new rows
          IF ( APEX_APPLICATION.G_F01(i) IS NULL ) THEN
              APEX_APPLICATION.G_F05(i)  := 
          END IF;
      END LOOP;
    END;
    
  • How to create elements of the checkbox on the form of tables

    I use the Application Express 4.2.1.00.08
    We currently have a spreadsheet that is who I am trying to replace application using APEX.

    I have loaded the spreadsheet into a table and have created a tabular presentation using the tabular presentation wizard who created the field in the form of text fields.

    The table has 38 columns in total, so I am trying to retrieve the columns to fit the screen.

    Most of the columns in the spreadsheet contain just the value 1 or null, so I want to make these fields check box so that they are checked if the value of the field is 1 and not controlled if the value is null. If the user selects the checkbox on the ground so I want to write a 1 in the table.

    Can you suggest I do this because several things that I have tried don't seem to work.

    Any suggestions or links to the doc on how to do that would be great.

    The structure of the table is the following:
    Name Null? Type
    ----------------------------------------- -------- ----------------------------
    IDENTIFICATION NUMBER
    FIELDNAME VARCHAR2 (30)
    ENTITY_CATEGORY VARCHAR2 (30)
    ATRIBUTE_GROUP VARCHAR2 (30)
    MASTER_SOURCE_SYSTEM VARCHAR2 (30)
    ENTERED_BY VARCHAR2 (30)
    DESCRIPTION VARCHAR2 (30)
    EXAMPLE_DATA VARCHAR2 (30)
    10891 VARCHAR2 (1)
    VARCHAR2 (1) 11072
    10892 VARCHAR2 (1)
    10487 VARCHAR2 (1)
    11065 VARCHAR2 (1)
    VARCHAR2 (1) 11078
    11066 VARCHAR2 (1)
    11067 VARCHAR2 (1)
    VARCHAR2 (1) 11061
    VARCHAR2 (1) 11062
    11063 VARCHAR2 (1)
    11064 VARCHAR2 (1)
    11079 VARCHAR2 (1)
    VARCHAR2 (1) 11057
    VARCHAR2 (1) 10520
    11058 VARCHAR2 (1)
    VARCHAR2 (1) 11056
    1262 VARCHAR2 (1)
    11070 VARCHAR2 (1)
    11059 VARCHAR2 (1)
    11060 VARCHAR2 (1)
    11071 VARCHAR2 (1)
    VARCHAR2 (1) 10819
    11069 VARCHAR2 (1)
    VARCHAR2 (1) 11068
    11074 VARCHAR2 (1)
    11075 VARCHAR2 (1)
    11076 VARCHAR2 (1)
    11077 VARCHAR2 (1)
    11073 VARCHAR2 (1)

    Published by: Kay Richards on June 7, 2013 16:51

    Published by: Kay Richards on June 7, 2013 17:14

    Click on the shape of table on the edit page

    go to the report attributes tab

    you will find the list of form elements

    now, click the icon to change the required column (small pencil icon).

    go to the tab column attributes, change the display as simple field check box.

    Then go to the values tab list.

    you will find the list of values definition text box just add 1 then click on apply changes.

    Run the page, you are gud to go.

    NULL is the default if the checkbox is in a disabled state, just use 1 in the list of values.

    Kind regards

    Mohan.

  • Setting value using javascript on the form of tables created by APEX_ITEM

    I can assign the value using javascript on normal form of table as below:

    var vRow = pThis.id.substr (pThis.id.indexOf ('_') + 1);
    $x_Value ('f05_' + vRow, 'Value');

    However I can't do the same if the tabular presentation is dynamically created by APEX_ITEM.

    Some tips on how to do this?

    Thank you

    If this should not be something like:

    this.id.substring(4, 8)
    

    Denes Kubicek
    -------------------------------------------------------------------
    http://deneskubicek.blogspot.com/
    http://www.Apress.com/9781430235125
    http://Apex.Oracle.com/pls/Apex/f?p=31517:1
    http://www.Amazon.de/Oracle-Apex-XE-Praxis/DP/3826655494
    -------------------------------------------------------------------

  • In the form of table and colspan or how to return more items in one line?

    I want to put a line in a higher number of items table it fits. So I want to put several options on an entry line field and text on another and so on. To restart the line, I made a dummy field with html like this:

    < table > < /tr > < tr > < td >

    But it's really ugly: http://apex.oracle.com/pls/apex/f?p=29764:1
    How to force colspan = X extend this cell of the input line along the table and get rid of these unnececary of the empty cells on the right? Attribute of the element does not (obviously)...

    Create a model of a named column custom report to meet the requirements in the form of tables.

  • Table update: lack of expression

    Hello

    I'm trying to update a table with values from another table.

    But I get expression missing error.

    I have created sample data for verification

    =============================================

    create the table empmstdet as

    (

    Select 10 empid, 0 active of all the double union

    Select 11 empid, 0 active double

    );

    update of empmstdet a set a.active =

    Select active

    (

    Select 10 like empid, 1 as an asset of all the double union

    Select 11 as empid, 1 as an asset of double

    ) b where b.empid = a.empid;

    I use oracle 10g

    Help, please

    update of empmstdet one

    Set a.active = (select b.active

    (select empid 10, 1 as an asset of all the double union)

    b Select empid 11, 1 as being active in the double)

    where b.empid = a.empid);

    This should do the trick... but you will update all rows in the table a no matter whether you look for a line in the table b (not a problem for your example). If you can't find any line, the value of the asset is going to be to NULL.

    Alternative:

    MERGE into empmstdet one

    USING (select empid 10, 1 as an asset of all the double union)

    b Select empid 11, 1 as being active in the double) on (a.empid = b.empid)

    WHEN MATCHED THEN update set a.active = b.active;

    (not tested)

    No update on the 'a' - rows without matching entries in table "b".

    HTH

  • Update a line based on the minimum value

    I need to update a value in row in a table (table 1), which has a relationship one may with another table (table 2) based on priority. Here is the data structure and sample of the table. I have a merge statement that can do all this, but it takes too much to run if the data into table2 are enormous.

    I want to reduce the execution time, can someone suggest me another way to achieve this.
    --Table Definition
    CREATE TABLE TABLE_1 (ENAME VARCHAR2(20), ID NUMBER(20), DISPLAY_NAME VARCHAR2(20), PRIMARY KEY (ENAME));
    CREATE TABLE TABLE_2 (ENAME VARCHAR2(20), DISPLAY_NAME VARCHAR2(20), PRIORITY NUMBER(1));
    
    --Sample data
    INSERT INTO TABLE_1 (ENAME,ID) VALUES ('EMP1','1000');
    INSERT INTO TABLE_1 (ENAME,ID) VALUES ('EMP2','2000');
    
    INSERT INTO TABLE_2 (ENAME,DISPLAY_NAME,PRIORITY) VALUES ('EMP1','APPLE',1);
    INSERT INTO TABLE_2 (ENAME,DISPLAY_NAME,PRIORITY) VALUES ('EMP1','DELL',2);
    INSERT INTO TABLE_2 (ENAME,DISPLAY_NAME,PRIORITY) VALUES ('EMP1','MS',NULL);
    
    --Merge to perfor the update
    MERGE INTO TABLE_1 T USING 
    (select ename, display_name from TABLE_2 where (ename,priority) in (
    select distinct ename, min(priority) over (partition by ename) from TABLE_2 min_prior)) Q
    ON (T.ENAME = Q.ENAME)
    WHEN MATCHED THEN UPDATE SET DISPLAY_NAME = Q.DISPLAY_NAME;

    Maybe (filtering of priority of the join before fusion as table_2 is huge)

    merge into table_1 t
    using (select ename,display_name
             from (select t2.ename,t2.display_name,
                          row_number() over (partition by t2.ename order by t2.priority) rn
                     from table_1 t1,
                          table_2 t2
                    where t1.ename = t2.ename
                  )
            where rn = 1
          ) q
       on (t.ename = q.ename)
     when matched
     then update
             set t.display_name = q.display_name
    

    Concerning

    Etbin

  • association table update with post boxes php/mysql table

    OK, I have a dynamic site for the checkboxes are dynamically added to the page database. the name of check boxes affect one table "checkbox []". now my $_Post ['checkbox'] will be an array. now I want to take this picture and make a loop for which updates my table once for each variable in the table, but it is not working and I am perplexed...

    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
      for ($i=0;$i<count($_POST['SpecificationEquipped']);$i++) {
       $updateSQL = sprintf("UPDATE TestersSpecifications SET SpecificationEquipped=%s WHERE TesterModel=%s AND SpecificationID=%s",
             GetSQLValueString(isset($_POST['SpecificationEquipped'][$i]) ? "true" : "", "defined","1","0"),
             GetSQLValueString($_POST['TesterModel'], "text"),
             GetSQLValueString($_POST['SpecificationID'][$i], "int"));
     
      mysql_select_db($database_ampacin1_ampac, $ampacin1_ampac);
      $Result1 = mysql_query($updateSQL, $ampacin1_ampac) or die(mysql_error());
      }
    }
    

    I don't know how make table works how the code is to "set". Anyone who thinks that they can tell me the best way to do it?

    Impression of SQL to see what is generated is the best way to solve problems with dynamically generated queries.

    It is not easy to understand exactly what you're trying to do. However, it might help you to solve the problem if you understand what does the following section of code:

    GetSQLValueString(isset($_POST['checkbox']) ? "true" : "", "defined","1","0")
    

    When a form is submitted, the value of a checkbox control is submitted through array $_POST only if the box is checked. Let's say you have a box like this:

    
    

    If the box is checked, the value of $_POST ["accept"] is "o". If the check box is disabled, $_POST ["accept"] is NOT defined. It is not empty, null, or something like that. There is simply not.

    That Dreamweaver verifies if the variable check box exists (isset()). If so, it inserts 1 in the database field. Otherwise, it inserts 0.

    The problem is that you have created a check box group, using a table. Let's say you have 10 check boxes in this group, if only 5 are selected, your table will contain only 5 Articles.

    Depending on how you configure things, I think you must have differently named checkboxes for each record that must be inserted into the database. You can do it with a counter and a loop:

    
      
    
    

    If you don't know in advance the number of items will be in your loop, you can use $i as the value for a field hidden once the loop is completed. This will allow you to browse your update queries, using the value of the hidden field to control the loop and using a meter to change the name of the boxes.

    for ($i = 1; $i < $_POST['count']; $i++) {
    // other stuff
    GetSQLValueString(isset($_POST["cb_$i"]) ? "true" : "", "defined","1","0")
    // other stuff
    }
    
  • Compare multiple columns and update a column based on the comparison

    Hi all

    I have to update the column STATUS of the slot structure of the table.

    Status should be 'P' if all the columns count are equal on the other should be "F".

    The value of the column can be "NA'. If the value is NA, then avoid this comparison column; compare only other 3 columns.

    My output should look like below.

    State of cnt1, cnt2 cnt3 ID cnt4

    1   4       4       4     4       P

    2   4       5       4     4       F

    3 4 4 NA 4 P

    NA 4 4 3 4

    I tried with the statemnt with BOX WHEN conditions and DECODE UPDATE, but could not succeed, can someone please help

    To do this, if you use my statement in response #11 box (Re: Re: comparison of multi-column and update a column based on the comparison of)

Maybe you are looking for