Update multiple rows in oracle

Hi,
I have two tables like as follows and I need to update Table A (Name field) base on table B. I need help on this.
Current Table A :
ID  Line Code Amount Name
111 1    MSCC 500    <null>
111 2    MSCC 300    <null>
111 3    MSCC 300    <null>
111 4    MSCD 300    <null>
111 5    TRFC 500    <null>
111 6    TRFC 500    <null>
111 7    TRFC 800    <null>
222 1    MSCC 300    <null>
Table B
No  HD_ID Line Description Dr_AMT Cr_AMT
111 2201  1    descA       300
111 2202  1    descB       500
111 2202  2    descC       500
111 2203  1    descD              300
111 2205  1    descE       300
111 2206  1    descF       400
111 2207  1    descG              600
111 2209  3    descH
222 2210  1    descI       300
- Find Table A (ID) = Table B (No)
- Find Table A Amount = Table B Dr_AMT / Cr_AMT
  - If Table A (Code) like '%C' then find Table B Dr_AMT field
  - If Table A (Code) like '%D' then find Table B Cr_AMT field
- If return more than one records, then update the Table A (Name) by sequence as below
Expecting result :
Update Name in Table A
ID  Line Code Amount Name
111 1    MSCC 500    descB   <-- If Code like '%C' then find Table B Dr_AMT field = Amount 500 (1st)
111 2    MSCC 300    descA   <-- If Code like '%C' then find Table B Dr_AMT field = Amount 300 (1st)
111 3    MSCC 300    descE   <-- If Code like '%C' then find Table B Dr_AMT field = Amount 300 (2nd)
111 4    MSCD 300    descD   <-- If Code like '%D' then find Table B Cr_AMT field = Amount 300 (1st)
111 5    TRFC 500    descC   <-- If Code like '%C' then find Table B Dr_AMT field = Amount 500 (2nd)
111 6    TRFC 500    <null>  <-- If Code like '%C' then find Table B Dr_AMT field = Amount 500 (3rd)
111 7    TRFC 800    <null>  <-- If Code like '%C' then find Table B Dr_AMT field = Amount 800 (1st)
222 1    MSCC 300    descI   <-- If Code like '%C' then find Table B Dr_AMT field = Amount 300 (1st)
Thanks a lot~

Hi all,
Sorry for any inconvenience caused, the tables structure and samples data as below,
Table A: ce_statement_lines_interface T1  (have many different bank_account_num and statement_date)
bank_account_num  trx_date line_number   TRX_CODE Amount bank_trx_number
11111111                  01-JAN-14 1              MSCC        500         <null>
11111111                  01-JAN-14 2              MSCC        300         <null>
11111111                  01-JAN-14 3              MSCC        300         <null>
11111111                   01-JAN-14 4             TRFD         300         <null>
11111111                  01-JAN-14 5              TRFC         500         <null>
11111111                  01-JAN-14 6              TRFC         500         <null>
11111111                  02-JAN-14 7              TRFC         800         <null>
22222222                  02-JAN-14 1              MSCC        300         <null>
Table B : GL_JE_LINES T2
select je_header_id,je_line_num,code_combination_id,effective_date, accounted_dr, accounted_cr, description from GL_JE_LINES ;
je_header_id je_line_num code_combination_id effective_date accounted_dr accounted_cr description
5541725       1                 2290                        01-JAN-14       300                                 descA
5541724       1                 2290                        01-JAN-14       500                                 descB
5541729       1                 2290                        01-JAN-14       500                                 descC
5541728       1                 2290                        01-JAN-14                         300               descD
5541727       1                 2290                        01-JAN-14       300                                 descE
5541721       1                 2290                        02-JAN-14       400                                 descF
5541722       1                 2290                        02-JAN-14                        600                descG
5541732       3                 2290                        02-JAN-14       850                                 descH
5540157       1                 2286                        02-JAN-14       300                                 descI
Table C : GL_JE_HEADERS H1
select H1.je_header_id, H1.default_effective_date, H1.ACCRUAL_REV_JE_HEADER_ID from GL_JE_HEADERS H1;
je_header_id default_effective_date ACCRUAL_REV_JE_HEADER_ID
5541725       01-JAN-14                 <null>
5541724       01-JAN-14                 <null>
5541729       01-JAN-14                 <null>
5541728       01-JAN-14                 <null>
5541727       01-JAN-14                 <null>
5541721       02-JAN-14                 <null>
5541722       02-JAN-14                 <null>
5541732       02-JAN-14                 <null>
5541757       02-JAN-14                 <null>
Table D : CE_STATEMENT_HEADERS_INT N1
select N1.bank_account_num, N1.statement_date,N1.record_status_flag from CE_STATEMENT_HEADERS_INT N1;
bank_account_num statement_date record_status_flag
11111111                 31-DEC-13      T
23456789                 31-DEC-13      T
11111111                 01-JAN-14      N
23456789                 01-JAN-14      T
11111111                 02-JAN-14      N
23456789                 02-JAN-14      N
xxxx....
Table E : CE_BANK_ACCOUNTS A1
select A1.bank_account_num, A1.asset_code_combination_id from CE_BANK_ACCOUNTS A1 where A1.bank_account_num in ('11111111','22222222');
bank_account_num asset_code_combination_id
11111111                 2290
22222222                 2286
Condition details:
1) Find out New statements status
- select N1.record_status_flag = 'N' in Table D : CE_STATEMENT_HEADERS_INT N1
2) Base on result(1) on table D (N1.bank_account_num and N1.statement_date)
- select Table A: ce_statement_lines_interface T1
  - T1.bank_account_num = N1.bank_account_num
  - T1.trx_date = N1.statement_date
  - T1.bank_trx_number is null
3) Find out A1.asset_code_combination_id (unique) on table E : CE_BANK_ACCOUNTS A1
  - N1.bank_account_num = A1.bank_account_num
4) Find out T2.JE_HEADER_ID on table B : GL_JE_LINES T2
  - T1.trx_date = T2.effective_date
  - T2.code_combination_id = A1.asset_code_combination_id
  - T2.gl_sl_link_id is null
5) Find out H1.ACCRUAL_REV_JE_HEADER_ID is null on Table C : GL_JE_HEADERS H1
  - T2.JE_HEADER_ID = H1.JE_HEADER_ID
  - T2.effective_date = H1.default_effective_date
  - H1.ACCRUAL_REV_JE_HEADER_ID is null
5) Find out T2.description on table B : GL_JE_LINES T2 to update T1.bank_trx_number (Do not repeat to select the T2.description)
  - (T1.TRX_CODE LIKE '%C' AND T1.amount = T2.accounted_dr ) OR (T1.TRX_CODE LIKE '%D' AND T1.amount = T2.accounted_cr)
Expecting Table A result ce_statement_lines_interface T1 (Do not repeat to select the T2.description into T1.bank_trx_number)
bank_account_num  trx_date      line_number   TRX_CODE      Amount  bank_trx_number
11111111                01-JAN-14      1                   MSCC             500    descB
11111111                01-JAN-14      2                   MSCC             300    descA
11111111                01-JAN-14      3                   MSCC             300    descE
11111111                01-JAN-14      4                   TRFD             300    descD
11111111                01-JAN-14      5                   TRFC             500    descC
11111111                01-JAN-14      6                   TRFC             500    <null>
11111111                02-JAN-14      7                   TRFC             800    <null>
22222222                02-JAN-14      1                   MSCC            300    descI
Many thanks to all again~

Similar Messages

  • Problem updating multiple rows in Oracle Application Express

    Apologies if this is in the wrong forum.
    I have added a column to a table in the SQL workshop in Apex. I now want to update it using some SQL commands and cannot figure out for the life of me how I terminate each command line. Below is an example of the following
    When I use the following line
    UPDATE "QUOTEES" SET "COUNTRY_CODE"='1GB' WHERE "QUOTEE_UID"='410'
    It works fine but if I amend it to
    UPDATE "QUOTEES" SET "COUNTRY_CODE"='1GB' WHERE "QUOTEE_UID"='410';
    UPDATE "QUOTEES" SET "COUNTRY_CODE"='1GB' WHERE "QUOTEE_UID"='416';
    UPDATE "QUOTEES" SET "COUNTRY_CODE"='1GB' WHERE "QUOTEE_UID"='424';
    Then it doesn't work, I get an invalid character error. My main experience using SQL is in MySQL so I'm not aware of differences in Oracle.
    Richard

    Hi Richard,
    I'm not familar with Apex, but that problem is similar to other tools.
    You either need to "execute as script". In TOAD this would F5.
    Or put empty lines in between;
    UPDATE "QUOTEES" SET "COUNTRY_CODE"='1GB' WHERE "QUOTEE_UID"='410';
    UPDATE "QUOTEES" SET "COUNTRY_CODE"='1GB' WHERE "QUOTEE_UID"='416';
    UPDATE "QUOTEES" SET "COUNTRY_CODE"='1GB' WHERE "QUOTEE_UID"='424';Then you can execute one at a time.
    Regards
    Peter

  • How to update multiple rows in one query using php

    i am new to this can any one help me how to update multiple rows at a time i am doing an school attendance page

    Often the situation is such that you have multiple courses across a range of dates.So students may take more than one course, and you need to track attendance for each course date. The following graphic demonstrates this:
    In such a situation, you need four database tables as follows:
    students (student_id, student_name, etc.)
    courses (course_id, course_name, etc.)
    students_courses (student_id, course_id)
    attendance (student_id, course_id, dater)
    A fifth table may also be needed to define the dates of courses, but you may also be able to build this array programmatically by using PHP's robust date functions, which can give you, for instance, all the Tuesdays and Thursdays between a start date and end date.
    The students_courses table simply keeps track of which students are taking which courses, so it has just two columns for the primary keys of both of the main tables. The attendance table is similar, but it also includes a date field. The following view of the attendance table demonstrates this:
    So if David's solution does cover your needs, consider yourself lucky, because this could quickly grow from a beginner-appropriate project to a moderately advanced one.

  • Update multiple rows in a dynamic table Dreamweaver CS5.5

    hello there
    i want to update multiple rows which comes from a dynamic table in Dreamweaver CS5 (a loop in php) here is my Mysql table :
    sql code
    CREATE TABLE `register`.`s_lessons` (
    `lid` int( 5 ) NOT NULL ,
    `sid` int( 9 ) NOT NULL ,
    `term` int( 5 ) NOT NULL ,
    `tid` int( 5 ) NOT NULL ,
    `point` double NOT NULL DEFAULT '0',
    PRIMARY KEY ( `lid` , `sid` , `term` ) ,
    KEY `tid` ( `tid` ) ,
    KEY `point` ( `point` )
    ) ENGINE = MYISAM DEFAULT CHARSET = utf8 COLLATE = utf8_persian_ci;
    and this is my page source code:
    php file
    <?php require_once('../Connections/register.php'); ?>
    <?php
    session_start();
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
      if (PHP_VERSION < 6) {
        $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;   
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      return $theValue;
    $colname1_rs1 = "-1";
    if (isset($_GET['term'])) {
      $colname1_rs1 = $_GET['term'];
    $colname_rs1 = "-1";
    if (isset($_GET['lid'])) {
      $colname_rs1 = $_GET['lid'];
    $colname2_rs1 = "-1";
    if (isset($_SESSION['tid'])) {
      $colname2_rs1 = $_SESSION['tid'];
    mysql_select_db($database_register, $register);
    $query_rs1 = sprintf("SELECT s_lessons.sid, s_lessons.lid, s_lessons.term, s_lessons.tid, s_lessons.point FROM s_lessons WHERE s_lessons.lid = %s AND s_lessons.term = %s AND s_lessons.tid  = %s", GetSQLValueString($colname_rs1, "int"),GetSQLValueString($colname1_rs1, "int"),GetSQLValueString($colname2_rs1, "int"));
    $rs1 = mysql_query($query_rs1, $register) or die(mysql_error());
    $row_rs1 = mysql_fetch_assoc($rs1);
    $totalRows_rs1 = mysql_num_rows($rs1);
    $count=mysql_num_rows($rs1);
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    for ($j = 0, $len = count($_POST['lid']); $j < $len; $j++) {
    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
      $updateSQL = sprintf("UPDATE s_lessons SET point=%s WHERE tid=%s, lid=%s, sid=%s, term=%s",
                           GetSQLValueString($_POST['point'] [$j], "double"),
                                GetSQLValueString($_SESSION['tid'], "int"),
                           GetSQLValueString($_POST['lid'] [$j], "int"),
                                GetSQLValueString($_POST['sid'] [$j], "int"),
                                GetSQLValueString($_POST['term'] [$j], "int"));
      mysql_select_db($database_register, $register);
      $Result1 = mysql_query($updateSQL, $register) or die(mysql_error());
      $updateGoTo = "student_lists.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
        $updateGoTo .= $_SERVER['QUERY_STRING'];
      header(sprintf("Location: %s", $updateGoTo));
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>r</title>
    <link href="styles/style.css" rel="stylesheet" type="text/css" media="screen" />
    <link href="styles/in_styles.css" rel="stylesheet" type="text/css" media="screen" />
    </head>
    <body>
    <div id="wrapper">
         <div id="header-wrapper">
         </div>
         <!-- end #header -->
         <div id="page">
              <div id="page-bgtop">
                   <div id="page-bgbtm">
                        <div id="content">
                             <div class="post">
                               <div style="clear: both;">
                            <form name="form1" id="form1" method="post" action="<?php echo $editFormAction; ?>">
                            <table border="1" align="center">
                              <tr>
                                <th>Student ID</th>
                                <th>Lesson ID</th>
                                <th>Semester</th>
                                <th>Point</th>
                              </tr>
                              <?php do { ?>
                                <tr>
                                  <td class="data"><label for="sid[]"></label>
                                  <input name="sid[]" type="text" id="sid[]" value="<?php echo $row_rs1['sid']; ?>" size="9" readonly="readonly" /></td>
                                  <td class="data"><label for="lid[]"></label>
                                  <input name="lid[]" type="text" id="lid[]" value="<?php echo $row_rs1['lid']; ?>" size="5" readonly="readonly" /></td>
                                  <td class="data"><label for="term[]"></label>
                                  <input name="term[]" type="text" id="term[]" value="<?php echo $row_rs1['term']; ?>" size="4" readonly="readonly" /></td>
                                  <td><label for="point[]"></label>
                                    <input name="point[]" type="text" id="point[]" value="<?php echo $row_rs1['point']; ?>" size="4" />                             
                              </tr>
                                <?php } while ($row_rs1 = mysql_fetch_assoc($rs1)); ?>
                            </table>
                            <p>
                              <input type="submit" name="Submit" id="Submit" value="Submit" />
                              <input type="hidden" name="MM_update" value="form1" />
                            </p>
                            </form>
                               </div>
                             </div>
                        <div style="clear: both;">
                    </div>
                        </div>
                        <!-- end #content -->
                        <!-- end #sidebar -->
                        <div style="clear: both;"> </div>
                   </div>
              </div>
         </div>
         <!-- end #page -->
    </div>
    <!-- end #footer -->
    </body>
    </html>
    <?php
    mysql_free_result($rs1);
    ?>
    All i want is that when users click on SUBMIT button values of point column in s_lessons(database table) be updated by new entries from user.
    i did my best and result with that code is :
    You  have an error in your SQL syntax; check the manual that corresponds to  your MySQL server version for the right syntax to use near ' lid=888,  sid=860935422, term=902' at line 1
    I would appreciate any idea.
    with prior thanks

    Go to the Row Properties, and in the Visibility tab, you have "Show or hide based on an expression". You can use this to write an expression that resolves to true if the row should be hidden, false otherwise.
    Additionally, in the Matrix properties you should take a look at the filters section, perhaps you can achieve what you wish to achieve through there by removing the unnecessary rows instead of just hiding them.
    It's only so much I can help you with the limited information. If you require further help, please provide us with more information such as what data are you displaying, what's the criteria to hiding rows, etc...
    Regards
    Andrew Borg Cardona

  • Update multiple rows based on two columns in same row

    I have a 1000 rows in a table I would like to update with a unique value. This unique value is a cocatenation of two columns in teh same row.
    Each row has a (i) date and a (ii) time and a (iii) date_time column. I would like to update the date_time (iii) column with a cocatenation of the (i) date and (ii) time columns.
    I know how I would update a single row but how can I update multiple rows with a cocatenation of each of the two columns - i.e put a different value into the date_time column for each row?

    this?
    update table tab_name
    set date_time =date||time
    where your_condition

  • Update multiple row for different values

    hi,
    Please provide me the sql query to update multiple row in a table with different values.
    i need to change the old date to new date
    we have only 3 column id,name,old date.now i need to update the old date to new date
    ID name old date new date
    1 A 2012-12-20 12/7/2012
    2 B 2012-12-20 12/9/2012
    3 c 2012-12-20 12/5/2012
    thank you.

    Here are two ways to do this. Thanks to ranit for the table creation script, which I adapted.create table test_x
    as
    select 1 id, 'A' name, to_date('2012-12-20','yyyy-mm-dd') old_date
    from dual UNION ALL
    select 2 id, 'B' name, to_date('2012-12-20','yyyy-mm-dd') old_date
    from dual UNION ALL
    SELECT 3 ID, 'C' NAME, TO_DATE('2012-12-20','yyyy-mm-dd') OLD_DATE
    from dual;First method using MERGE:MERGE INTO TEST_X O
    USING (
      select 1 id, to_date('12/7/2012','mm/dd/yyyy') new_date
      from dual UNION ALL
      select 2 id, to_date('12/9/2012','mm/dd/yyyy') new_date
      from dual UNION ALL
      SELECT 3 ID, TO_DATE('12/5/2012','mm/dd/yyyy') NEW_DATE
      FROM DUAL
    ) n
    ON (O.ID = N.ID)
    WHEN MATCHED THEN UPDATE SET OLD_DATE = n.NEW_DATE;Second method using UPDATE:UPDATE TEST_X SET OLD_DATE =
      CASE WHEN ID = 1 THEN TO_DATE('12/7/2012','mm/dd/yyyy')
           WHEN ID = 2 THEN TO_DATE('12/9/2012','mm/dd/yyyy')
           WHEN ID = 3 THEN TO_DATE('12/5/2012','mm/dd/yyyy')
      END
    where id between 1 and 3;
    You probably don't want to use these methods.*
    You say the "user" will enter these values. Will he always enter exactly 3 values?
    The "user" will enter values into a screen I suppose. What language is the user interface programmed in?

  • BC4J datagrid to update multiple rows

    Hi,
    How do we update multiple rows at a time in a BC4J JSP with Struts. I intend to have a datagrid control on a JSP so that users may update multiple rows at a time and click 'Update' once.
    There is a possible (workaround) solution using struts nested tags but one would lose the benefits of JBO tags on using struts tags (e.g Calendar control would not be visible for Date input).
    Any implementation suggestions?
    Regards,
    Ashish

    Does the database only contain data where there are events on a given 15-minute time slot?

  • Update Multiple Rows using Row Selector

    Hi,
    I want to update multiple rows using a tabular form with row selector, and an item in another region of the page, using an update expression and a button.
    The syntax would be like this:
    update MY_TABLE set UPDATABLE_COLUMN = :P10_NEW_VALUE where {row selector = true}
    What is the syntax for the WHERE clause, anyone knows? In the manual there is no information at all for doing this.
    PD. I added the row selector after creating the form, so I don't have any wizard-created MRU processes in the page.
    HTMLDB version is 1.6
    Thanks.

    Hi,
    I want to update multiple rows using a tabular form with row selector, and an item in another region of the page, using an update expression and a button.
    The syntax would be like this:
    update MY_TABLE set UPDATABLE_COLUMN = :P10_NEW_VALUE where {row selector = true}
    What is the syntax for the WHERE clause, anyone knows? In the manual there is no information at all for doing this.
    PD. I added the row selector after creating the form, so I don't have any wizard-created MRU processes in the page.
    HTMLDB version is 1.6
    Thanks.

  • Updating multiple rows in a table in ADF

    Hi
    How do we update multiple rows in a table.
    Onclicking a update button the changed rows must be updated.

    Hi Prince,
    currently I am selecting one row from the table and rendering a region at the top of the table and capturing the user entered data with the following code:
    ViewObjectVOImpl vo = getViewObjectVO1();
    Row CurrentRow = vo.getCurrentRow();
    //After this I perform the checks like user entered value is not null or check input as per business logic.
    if(CurrentRow.getAttribute("attributeName") ==null){
    //Add what message you want to display
    //Add other business logic.
    After making all the checks, i commit it.
    getOADBTransaction().commit();
    Now in my new page I am capturing the user input in the table itself like an excel sheet. Suppose there are ten rows in my advanced table on my page, and each row has one editable field. I have one save button at the bottom of the table.
    Now on clicking the save button I have to capture the user input, check whether there is any null value and if all the entered data is correct then only I should commit it.
    Can you please let me know how we can accomplish that.
    Regards
    Hawker

  • Updating multiple rows

    Hi,
    I have a problem updating multiple rows.
    I have the following update:
    update POI.PERFTABLE p set P.PERF_3YEAR_ANNO =
    (Select
    PERF_ANNO_DAUER
    rtrim(fs.match),
    3
    From POI.FONDSSTAMM fs ) where p.MATCH=match
    but I become the error: ORA-01427: single-row subquery returns more than one row.
    How must I write my SQL-Command that it works??????????
    thanxx
    Schoeib

    Hhhhmmmmm,
    -- So - this doesn't work .......
    UPDATE  POI.PERFTABLE p
    SET     P.PERF_3YEAR_ANNO =
        (   SELECT  PERF_ANNO_DAUER ( RTRIM( FS.Match ), 3 )
            FROM    POI.FONDSSTAMM fs
    WHERE   P.Match = v_Match
    -- Maybe - you could force the sub-select to return a single row.
    UPDATE  POI.PERFTABLE p
    SET     P.PERF_3YEAR_ANNO =
        (   SELECT  PERF_ANNO_DAUER ( RTRIM( FS.Match ), 3 )
            FROM    POI.FONDSSTAMM fs
            -- Restrict the sub-query to returning a single row.
            WHERE   FS.Some_ID = P.some_Id
    WHERE   P.Match = v_Match
    or even
    -- Since you are using a function why not adjust the function,
    --  or write a simular one, so that something like this would work.
    UPDATE  POI.PERFTABLE p
    SET     P.PERF_3YEAR_ANNO = PERF_ANNO_DAUER ( RTRIM( P.Match ), 3 )
    WHERE   P.Match = v_Match
    ;Dude,
    Eric Kamradt

  • Updating multiple rows with different values

    Hi!
    I have a problem. I need to update more then 1000 rows with different values. How can I do it?
    For exsample i have table:
    id; color, date,
    1 red
    2 green
    3 white
    I need to update date field.
    Update table
    set date='01.02.03'
    where id=1
    Update table
    set date='01.03.03'
    where id=2
    Maybe there is way how to update multiple rows at one query?
    Sorry for my bad english.
    Thanks!

    Hi,
    You can try this
    UPDATE TABLE SET DATE = CASE
                        WHEN ID = 1 THEN TO_DATE('01-02-03','DD-MM-RR')
                        WHEN ID = 2 THEN TO_DATE('01-03-03','DD-MM-RR')
                        ENDcheers
    VT

  • Trouble updating multiple rows in table using subquery

    Hi everyone, I'm having trouble updating multiple rows with a subquery. Here's the setup:
    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, using an update statement (or merge if that's better), say I want to set the values for col_d where col_b = 3 equal to the values for col_d where col_b = 1 and col_c equal each other. Results should look like 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     17I can see it right there at my fingertips using this query, where I want to set b_col_d = a_col_d, but I'm missing something, as this query returns too many rows when 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_cupdate mytable set column_d = (select ??? where exists ???)
    Can someone help me get there? I'm using 10GR2.
    Thanks!
    Mark

    Hopefully this is what you are 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 so much for providing the sample data in an easy to consume form, as well as the expected output.

  • CMP update multiple rows

    Hi,
    Is there a way to update multiple rows when using CMPs.
    For example I can update multiple rows by this method.
    while (condition)
    cmp = cmpHome.findByPrimaryKey(key);
    cmp.setValue(newValue);
    Rather than this method is there a way that I can update many rows just as normal sql update.
    thanks in advance,
    chamal.

    If you want to concatenate Acol column with sysdate for 605 and 608 ....i think you need to code less (of what you have posted)
    UPDATE TEST
    SET TEST.ACOL =  TEST.ACOL || ' ' ||sysdate
    where
    test.acol in (605,608);--I don't know why you want this , Just given the suggestion as per the requirement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Update multiple rows involving spatial data

    Hi,
    i have 2 table, that are
    temp
    store_id
    store_state
    geom mdsys.sdo_geometry
    us_states
    state
    geom mdsys.sdo_geometry
    i have indexed both table with spatial index.
    If i wanna find state that temp.geom is inside us_states.geom using
    SQL> select state from us_states, temp
    where sdo_inside(temp.geom, us_states.geom) = 'TRUE';
    it's work
    but if i wanna update temp.store_state using
    SQL> update temp set store_state = (select state from us_states
    where sdo_inside(temp.geom, us_states.geom) = 'TRUE');
    it gives this error
    update temp set store_state = (select state from us_states where sdo_inside(temp.geom, us_states.geom) = 'TRUE')
    ERROR at line 1:
    ORA-13226: interface not supported without a spatial index
    ORA-06512: at "MDSYS.MD", line 1723
    ORA-06512: at "MDSYS.MDERR", line 8
    ORA-06512: at "MDSYS.SDO_3GL", line 62
    ORA-06512: at "MDSYS.SDO_3GL", line 192
    any idea how can i update multiple rows that involving spatial data?
    Thanks
    Hadi

    Hadi,
    There are a number of things wrong with the second item. First up you most likely will return more than one row, which is not allowed as the = expects only one item.
    Here is what I would use, which will update everything that meets the requirements, and ignore the rest:
    UPDATE (
    SELECT /*+ bypass_ujvc */
    state, store_id, store_state
    FROM temp, us_states
    WHERE sdo_inside(temp.geom, us_states.geom) = 'TRUE')
    SET store_state = state;
    With the /*+ bypass_ujvc */ you're telling the db to not worry about requiring a "unique join view condition" -- which roughly mean "trust me, my rows are key preserved." This is important since there is really no "hard" key-based relationship to tie the two together.
    However, unless you really think there are stores that border on two states, this will run much quicker with an anyinteract comparison.
    Bryan

  • Want to update multiple rows of the report but getting a bug.

    hi,
    I am trying to update multiple rows of a report.For that I have created a teport with dynamic checkbox generated using ---HTMLDB_ITEM.CHECKBOX(1,utt.trouble_ticket_id) " "----.Checkboxes are rendered perfectly on the report.
    but when I tried to update the selected rows of the report as given in the documentation
    begin
    :P16_priority:=htmldb_application.G_F01.count;
    for i in 1..htmldb_application.G_F01.count
    loop
    update umanage_trouble_ticket set severity =:P16_priority where
    trouble_ticket_id = htmldb_application.G_F01(i);
    end loop;     
    end;
    I found that all the rows are updated.not only selected rows.
    and the count it gives =no of rows returned + no of rows selected.
    Please help me regarding this.
    thanx.
    BHARAT

    Hi Bernhard,
    I think that u didnt get y problem.
    When I take the value from "htmldb_application.g_f01(i)" then it should return id's of rows that are checked but when I do that it returns id's of all the rows.So I am not able to update only checked rows.
    from id's of rows i mean value provided when generating checkboxes through query.
    htmldb_item.checkbox(1,trouble_ticket_id) " "
    I am approching to the solution as specified in the documentation. "Adding check boxes to each row in a report".
    but still cant find any solution.
    thanx that u showed some intrest in my problem.
    If u can get the solution reply soon.
    Regards
    BHARAT

Maybe you are looking for

  • Problem Using wlserver task in ant file

    I am trying to create a weblogic domain using the following in my ant file: <target name="new-server"> <mkdir dir="/opt/deployment/domains" /> <wlserver dir="/opt/deployment/domains" beahome="/opt/bea" domainname="SandboxDomain" servername="AdminServ

  • Tabbed Panel content overflow problem

    Hi everyone, I'm a newbie to this, but have successfully used a few Spry elements and am loving them. My problem right now is that I'm trying to get a tabbed panel to work where the panel contents have different amounts of text. It works great in IE6

  • I am not able to open up Safari!!!!!!!

    I am not able to open up Safari, but I think that maybe I have a virus on my computer what is not allowing me to open it up. The Safari icon jumps when I click on it, but thats it. It doesn't open and I really need to use it! I have to use Google Chr

  • Why does spot CMYK paste as spot book colour? CS5

    open pre-existing doc with CMYK spot colour defined named as PANTONE 280 C copy  element paste into new document Both existing doc and new doc have identical colour proof set-up new doc has empty colour palette When pasted into new doc, CMYK spot bec

  • How can I find an IPod with my Ipad

    Can anyone tell me how to find a lost IPod using my IPad?