Sorting Database record results

Hello,
I have a cfm that outputs a table and populates it with
records of the database. Using the following query:
As you can see from the SQL, the query can read url
parameters like such:
"index.cfm?eng=MC&month=4&year=2007&destino=EXTRANJERO&submit=Submit+Query"
and output the records that fit the criteria.
Now my problem is everytime I try to sort by any of this
headers
<a href="index.cfm?sort=#IIF(sort is 19, '20',
'19')#"> the server will forget allt he other search
parameters within the url.
How do I preserve the other url parameters before sorting?
Also, if someone could plz point me in the direction of
another site with a great CF community I would appreciate it.
Thanks

One option is to parse the CGI.QUERY_STRING (ie a string of
all url variables) and grab all of the parameters except "sort".
Then append those parameters to your header. Possibly something
like this
<cfset newQueryString = reReplaceNoCase(CGI.QUERY_STRING,
"&*sort=[^&]*", "", "all")>
<a href="index.cfm?sort=#IIF(sort is 19, '20',
'19')#&#newQueryString#"> ..
Btw, I would recommend using cfqueryparam. Its dangerous to
use URL variables directly in a query.
Update: Corrected typo in CGI variable name

Similar Messages

  • How to sort database record in an Ascending or Descending order

    First script below is on Initialize the second on Validate.  I need the database to sort on an ascending order.  I tried using the order by script in RED below to the Validate script but to no avail.  Any help would be greatly appreciated.
    $sourceSet.DataConnection2.#command.query.select.nodes.item(0).value = Concat("Select * from brw.ps_m_ee_genl_data Where FULL_NAME = ", Ltrim(Rtrim(SelectField.rawValue)) , " order by FULL_Name asc")
    form1.#subform[0].SelectField::initialize - (JavaScript, client)
    /* This listbox object will populate two columns with data from a data connection.
    sDataConnectionName - name of the data connection to get the data from. Note the data connection will appear in the Data View.
    sColHiddenValue - this is the hidden value column of the listbox. Specify the table column name used for populating.
    sColDisplayText - this is the display text column of the listbox. Specify the table column name used for populating.
    These variables must be assigned for this script to run correctly. Replace <value> with the correct value.
    var 
    sDataConnectionName = "DataConnection2"; // example - var sDataConnectionName = "MyDataConnection";
    var 
    sColHiddenValue = "FULL_NAME"; // example - var sColHiddenValue = "MyIndexValue";
    var 
    sColDisplayText = "EMPLID"; // example - var sColDisplayText = "MyDescription"
    // Search for sourceSet node which matchs the DataConnection name
    var 
    nIndex = 0;
    while 
    (xfa.sourceSet.nodes.item(nIndex).name != sDataConnectionName){
    nIndex
    ++;}
    var 
    oDB = xfa.sourceSet.nodes.item(nIndex);oDB.open();
    oDB.first();
    // Search node with the class name "command"
    nIndex
    = 0;
    while 
    (oDB.nodes.item(nIndex).className != "command"){
    nIndex
    ++;}
    // Need to set BOF and EOF to stay
    oDB.nodes.item(nIndex).query.recordSet.setAttribute("stayBOF"
    , "bofAction");oDB.nodes.item(nIndex).query.recordSet.setAttribute("stayEOF"
    , "eofAction");
    // Search for the record node with the matching Data Connection name
    nIndex
    = 0;
    while 
    (xfa.record.nodes.item(nIndex).name != sDataConnectionName){
    nIndex
    ++;}
    var 
    oRecord = xfa.record.nodes.item(nIndex);
    // Find the value node
    var 
    oValueNode = null;
    var 
    oTextNode = null;
    for 
    (var nColIndex = 0; nColIndex < oRecord.nodes.length; nColIndex++){
    if(oRecord.nodes.item(nColIndex).name == sColHiddenValue){
    oValueNode
    = oRecord.nodes.item(nColIndex);}
    else if(oRecord.nodes.item(nColIndex).name == sColDisplayText){
    oTextNode
    = oRecord.nodes.item(nColIndex);}
    while 
    (!oDB.isEOF()){
    this.addItem(oValueNode.value
    , oValueNode.value); 
    //IDList.addItem(oValueNode.value, oTextNode.value);
    oDB.next();
    // Close connection
    oDB.close();
    form1.#subform[0].SelectField::validate - (FormCalc, client)
     if  (Len(Ltrim(Rtrim(SelectField.rawValue))) > 0) then
     //Change the commandType from TABLE to TEXT. TEXT is the equivalent of SQL Property
    $sourceSet.DataConnection2.#command.query.commandType= "text" 
    //Set the Select Node. Select in this case will be whatever the SQL Property you want.
    $sourceSet.DataConnection2.#command.query.select.nodes.item(0).value= Concat("Select * from brw.ps_m_ee_genl_data Where FULL_NAME = ", Ltrim(Rtrim(SelectField.rawValue)) , "") 
    //Reopen the Dataconnection
    $sourceSet.DataConnection2.open()endif

    This is in Mavericks, but I think it also applies to the Finder in Lion.
    View menu / Arrange by / Name.

  • The ABAP/4 Open SQL array insert results in duplicate database records

    Hi,
    Iam getting following error :
    The ABAP/4 Open SQL array insert results in duplicate database records.
    Error in ABAP application program.
    The current ABAP program "SAPLV60U" had to be terminated because one of the
    statements could not be executed.
    This is probably due to an error in the ABAP program.
    " Information on where terminated
    The termination occurred in the ABAP program "SAPLV60U" in "VBUK_BEARBEITEN".
    The main program was "SAPMSSY4 ".
    The termination occurred in line 503 of the source code of the (Include)
    program "LV60UF0V"
    of the source code of program "LV60UF0V" (when calling the editor 5030).
    Processing was terminated because the exception "CX_SY_OPEN_SQL_DB" occurred in
    the
    procedure "VBUK_BEARBEITEN" "(FORM)" but was not handled locally, not declared
    in the
    RAISING clause of the procedure.
    The procedure is in the program "SAPLV60U ". Its source code starts in line 469
    of the (Include) program "LV60UF0V "."
    Please assist how to proceed further ..
    Many thanks
    Mujeeb.

    Sorry, THe correct note is 402221.
    Description from the note
    << Please do not post SAP notes - they are copyrighed material >>
    Edited by: Rob Burbank on Feb 22, 2009 3:46 PM

  • He ABAP/4 Open SQL array insert results in duplicate database records

    Dear Gurus,
    II am getting a dump when I run MD02/ MD03. (t- code to run MRP)
    Below is the message system is showing:
    Please help
    Thanks in Advance
    Best Regards
    Adhish
    Short text
    The ABAP/4 Open SQL array insert results in duplicate database records.
    What happened?
    Error in the ABAP Application Program
    The current ABAP program "SAPLM61U" had to be terminated because it has
    come across a statement that unfortunately cannot be executed.
    Error analysis
    An exception occurred that is explained in detail below.
    The exception, which is assigned to class 'CX_SY_OPEN_SQL_DB', was not caught
    in
    procedure "INSERT_MDSBI_IN_MDSB" "(FORM)", nor was it propagated by a RAISING
    clause.
    Since the caller of the procedure could not have anticipated that the
    exception would occur, the current program is terminated.
    The reason for the exception is:
    If you use an ABAP/4 Open SQL array insert to insert a record in
    the database and that record already exists with the same key,
    this results in a termination.
    (With an ABAP/4 Open SQL single record insert in the same error
    situation, processing does not terminate, but SY-SUBRC is set to 4.)
    1 *----
    2 * ARRAY-INSERT auf MDSB
    3 *----
    4 FORM INSERT_MDSBI_IN_MDSB.
    INSERT MDSB6 FROM TABLE MDSBI.
    7 ADD SY-DBCNT TO STATS-RESBI. "statistics
    8 ENDFORM.

    Hi,
    There must be inconsistency in the number range. This happens when the current number in the number range for dependent requirements is lower than the highest number in the database table of the dependent requirements RESB.
    Please check the current number in transaction OMI2. Here in the interval you can see the current number. Then please check the highest number in table RESB. If the current number in OMI2 is lower than the highest number in table RESB then this should be the reason for the dump.
    Check and revert. If that's not the case we'll look into other possibilities.
    In mean time check for SAP Note 138108.

  • ABAP/4 Open SQL array insert results in duplicate database records in SM58

    Hi Everyone,
    I am testing a file to idoc scenario in my Quality system. When I passed the input file, the mapping executed successfully and there are no entries in SMQ2 but still the idoc wasn't created in the ECC system. When I have checked in TRFC, I am getting the error  ABAP/4 Open SQL array insert results in duplicate database records for IDOC_INBOUND_AYNCHRONOUS function module. I thought this is a data issue and I have tested with a fresh data which was never used for testing in Quality but even then I am getting the same error.Kindly advise.
    Thanks,
    Laawanya

    use FM idoc_status_write_to_database to change the IDoc status from 03 to 30 and then  run WE14 or  RSEOUT00 to change the status back to 03
    resending idoc from status 03 ...is a data duplicatino issue on receiving side...why do u need to do that ?
    Use WE19 tcode to debug
    In we19
    1)U can choose your Idoc number in existing Idoc textbox
    2)Press execute
    3)u will display ur Idoc struct
    4)Dbl click on any field then u can modify its content
    5)PressStd Outbound Processing Btn to process modified Idoc
    Thats it

  • Using Java Bean in JSP to show database record

    I have links in my Tomcat container that if someone clicks on a specific link it should go to a Record page (Show.jsp) with all the values associated with a record from a database.
    For example if someone clicks on a specific link like this:
    LinkExample
    it would take you to a jsp with database info for someone named Jones and show you his info:
    Lastname = Jones
    Firstname = Mike
    City = San Diego
    I would like to do this using a Java helper class and bean so I dont have any database connection or Java code in my JSP.
    I created Java class file that has Database connection that works with a Java bean. I just dont know how to get the Show.jsp to work with the Java Bean and Java helper class file.
    Here is what I have for Show.jsp and this is the part I have been working on the longest but cant get it to work because it doesnt seem to work with the database:<jsp:useBean id="user" class="num.UserDB"/>
    //do I call getUser(lastname) here and if so how?
    <jsp:setProperty name="user" property="*"/>
    Last Name: <jsp:getProperty name="user" property="lastname"/><BR>
    First Name: <jsp:getProperty name="user" property="firstname"/><BR>
    City: <jsp:getProperty name="user" property="city"/><BR>My Java Helper class that compiles and connects to database:
    package num;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import num.User;
    public class UserDB
    public User getUser(String lastname)
    User user = new User();     
            try          
         Class.forName...//database connection stuff here
        ResultSet results = stmt.executeQuery("SELECT * from user where lastname = '" + lastname + "'");
         if(results.next() == true)
         results.next();
         user.setLastname(results.getString("lastname"));
         user.setFirstname(results.getString("firstname"));
            user.setFirstname(results.getString("city"));
         catch(Exception e)          
                   System.out.println("Exception...");               
       return user;
    }My Java Bean that compiles here:
    package num;
    public class User
      private String firstname;
      private String lastname;
    private String city;
      public User()
         //no arg constructor
      public User(String firstname, String lastname, String city)
           this.lastname = lastname;
              this.firstname = firstname;
              this.city = city;
      public String getLastname()
              return lastname;
      public void setLastname(String lastname)
         this.lastname = lastname;
      //more bean methods for all fields here
     

    Sorry if I wasnt specific enough. I have a link that passes a value (field that is passed is called lastname) to a JSP where I want to show record info for that value that is passed.
    My question is how do I show the database record info on Show.jsp for the lastname field value of Jones where I want to use a Java Bean and Database helper class in Show.jsp
    Here is the message I get when I hit the link (LinkExample) and it goes to Show.jsp:
    org.apache.jasper.JasperException: Cannot find any information on property 'lastname' in a bean of type 'num.UserDB'
    .....My UserDB class:
    public class UserDB
    public User getUser(String lastname)
    User user = new User();     
            try          
         Class.forName("org.gjt.mm.mysql.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/dbconnone?user=smitherson&password=abcdefg");
        Statement stmt = conn.createStatement();
        ResultSet results = stmt.executeQuery("SELECT * from user where lastname = '" + lastname + "'");
         if(results.next() == true)
         results.next();
         user.setLastname(results.getString("lastname"));
         user.setFirstname(results.getString("firstname"));
                         user.city(results.getString("city"));
         catch(Exception e)          
             System.out.println("Exception..." + e);          
       return user;
    }Bean class:
    package num;
    public class User
      private String firstname;
      private String lastname;
      private String city;
      public User()
         //no arg constructor
      public User(String firstname, String lastname, Sting city)
          this.firstname = firstname;
           this.lastname = lastname;
    this.city = city;
      public String getFirstname()
              return firstname;
      public void setFirstname(String firstname)
         this.firstname = firstname;
      public String getLastname()
              return lastname;
      public void setLastname(String lastname)
         this.lastname = lastname;
      public String getCity()
              return city;
      public void setCity(String city)
         this.city = city;
      

  • Problem in sorting the records

    Hi All,
    I have to sort some records based on a key. If the key field is optional then how to sort the records. For example consider the follwing records.
    <row>
          <name>jaya</name>
          <address>hyd</address>
          <material>d</material>
          <units>4</units>
          <price>6</price>
    </row>
      <row>
          <address>ss</address>
          <material>wd</material>
          <units>7</units>
          <price>9</price>
       </row>
    <row>
          <name>radha</name>
          <address>pune</address>
          <material>g</material>
          <units>9</units>
          <price>3</price>
    </row>
    Here name field is used as a key in sorting the records. in the second record name field does'nt exists. All the records that doesnt have the name field shud come on the top and the rest with name field shud come sorted.
    Can anyone please helpout how to solve this problem??

    Jhansi,
    Did u solved the issue? The scenario is lil bit complicated, please consider my below suggestion, if you haven't achieved your results.
    I must really thankful to Michal and all my SDN friends,who guided me to use the logic-using multiple Mapping program in one Interface mapping.
    /people/michal.krawczyk2/blog/2005/11/01/xi-xml-node-into-a-string-with-graphical-mapping
    Ok, let us come to the logic.
    For your problem we need to use two mapping programs.
    <b>Mapping Program 1</b>
    http://www.flickr.com/photo_zoom.gne?id=897495319&size=o
    <b>Mapping Program 2</b>
    http://www.flickr.com/photo_zoom.gne?id=897495327&size=o
    http://www.flickr.com/photo_zoom.gne?id=897495341&size=o
    <b>UDF1 - Testing</b>
    http://www.flickr.com/photo_zoom.gne?id=897495429&size=o
    String temp;
    for(int i=0;i<Name.length;i++)
    for(int j=i1;j<Name.length;j+)
    if(Name<b>[</b>i<b>]</b>.compareToIgnoreCase(Name[j])>0)
               temp = Name<b>[</b>i<b>]</b>;
                Name<b>[</b>i<b>]</b>= Name[j];
                Name[j]=temp;
    for(int i=0;i<Name.length;i++)
    if(Name<b>[</b>i<b>]</b>.equals("0"))
    result.addSuppress();
    result.addContextChange();
    else
    result.addValue(""Name<b>[</b>i<b>]</b>"");
    result.addContextChange();
    <b>UDF 2 - Testin1</b>
    http://www.flickr.com/photo_zoom.gne?id=897495437&size=o
    String temp,temp1;
    for(int i=0;i<Name.length;i++)
    for(int j=i1;j<Name.length;j+)
    if(Name<b>[</b>i<b>]</b>.compareToIgnoreCase(Name[j])>0)
               temp = Name<b>[</b>i<b>]</b>;
                Name<b>[</b>i<b>]</b>= Name[j];
                Name[j]=temp;
          temp = Values<b>[</b>i<b>]</b>;
                Values<b>[</b>i<b>]</b>= Values[j];
                Values[j]=temp;
    for(int i=0;i<Values.length;i++)
    result.addValue(""Values<b>[</b>i<b>]</b>"");
    result.addContextChange();
    <b>Interface Mapping</b>
    http://www.flickr.com/photo_zoom.gne?id=897495361&size=o
    <b>Finally -Results:</b>
    http://www.flickr.com/photo_zoom.gne?id=897498639&size=o (My Data)
    http://www.flickr.com/photo_zoom.gne?id=897498659&size=o (Your Data)
    I hope it helps you!!!!
    I don't know whether this is the correct way or any other simplest way to do so. Also I request our friends to feedback their inpute regarding this logic.
    Jhansi,if you have any doubts in achieving the same, kindly reply back.
    Best regards,
    raj.

  • Duplicate database records.

    Hi Gurus,
    I am trying to insert into a db table from an internal tbl. And the result return error as shown below:
    The ABAP/4 Open SQL array insert results in duplicate database records.
    How do  I solve this?
    Thank you in advanced.

    Hi,
    The following code can be used as a template to produce an ABAP which updates a particular database
    table field.
    *& Report  ZUPDATE_PRPS                                                *
    *&  Quick report to Update PRPS-FAKKZ database field                   *
    Report  ZUPDATE_PRPS.
    tables: prps.
    parameter: p_wbs like prps-pspnr,
               p_value like prps-fakkz default 'X'.
    data: wa_fakkz type prps-fakkz.
    *START-OF_SELECTION
    start-of-selection.
    call function 'CONVERSION_EXIT_ABPSP_INPUT'
         exporting
             input     = p_wbs
        importing
             output    = p_wbs
        exceptions
             not_found = 1
             others    = 2.
    select single fakkz
      into wa_fakkz
      from prps
    where pspnr eq p_wbs.
    if sy-subrc eq 0.
       update prps set fakkz = p_value where PSPNR eq p_wbs.
       if p_value is initial.
         message i999(za) with 'Billing element field has been unchecked'.
       else.
         message i999(za) with 'Billing element field has been checked'.
       endif.
    else.
      message i999(za) with 'WBS element not found'.
    endif.

  • MySQL database record hits counter?

    Can I find out how many times a record from the MySQL databse was called and displayed on a web browser?Basically a MySQL database record hits counter. I’m using PHP/MySQL.
     

    >to the two files that were created
    >Two files?
    Yes 2 files. In Dreamweaver CS3 & CS4 When using the "Insertà Data Objectsà Master Detail Page Set" function you must create two files:
    1. results.php
    2. detail.php
    It appears that these two files work together hand in hand. You did not specify where nor how to include an update record set that gets executed every time another record set that I want to count fires. So I combined the two as one until it was clarified. 
      

  • Sort order of results in UOW Conformed Query ??

    We would like to know what is the expected behavior when a query with ascending ordering or descending ordering is run with UOW conformed.
    We know for sure that SQL generated and submit to the database with ORDER BY CLAUSES (which get the data in the database and sorted properly)
    However, with a confirm query, the database result will in turn, combine selected objects in the UNIT OF WORK.
    Will the combined collection of object be sorted in the prescribed ordering ?
    For example:
    If in UOW we have some uncommitted CAT object CAT-9, and CAT- 5
    In Database we return CAT-1, CAT-3, CAT-7 sorted in ascending order
    Will toplink return after the UOW conformed query, a collection in the following order ?
    CAT-1, CAT-3, CAT-5, CAT-7, CAT-9 ???
    Please advice.
    Thank you in advance.

    No, any new objects that conform to the query will be added to the end of the result set, so may not match the query's sort order.
    If you need the conformed results to maintain ordering you can either,
    - Sort the results in-memory after executing the query through Collections.sort(List).
    - Use a TreeSet as the query resultCollectionClass to sort the query results.

  • Want to sort the records based on non-base table item

    I have a multi-record block and I am trying to sort the data based on nbt item
    I have a table called X which has x_type,x_code fields.
    The table on which the block is created is Y. the table Y has x_type and y_desc as its fields
    form layout is like below .the x_type is key field on which I have to query the records
    and x_code is a non-base item in the form.I want to sort the records by X_code.
    x_code y_desc
    A     xyz
    c par
    B     lmn
    my pre-query has this code
    select x_type from y
    where
    x_type := x_type;
    post-query has this code
    select x_code from x
    where x_type = :x_type;     
    It works fine in Enter-Queryand execute query mode. but when I am sorting the records on
    nbt item x_code by SET-BLOCK-PROPERTY it doesn't do any thing

    Hi Tony ,
    I have created a function and in Pre-Query & have add this
    SET_BLOCK_PROPERTY('b1', ORDER_BY, 'fn_get_code(x_type)');
    and the function created is as below
    Function fn_get_code (p_x_type in varchar2) return varchar2 is
    v_code varchar2(40);
    begin
    select x_code into v_code
    from X, Y
    where X.x_type = Y.x_type
    and y.x_type = p_x_type
    return v_code;
    end;
    when I run the form and execute query it comes up with the error message
    FRM-40505 and when I pressed display error it shows
    SQL Statement error:
    SELECT ROWID,X_TYPE,X_CODE
    FROM Y order by fn_get_code(x_type)
    Error:
    "ORA-00904: "FN_GET_code": invalid identifier"
    Is it that I need to create a function on the database?. As I have created function
    in program unit section

  • Update database record from email link or attachment ?

    Hello,
    Is there any way to send email from application with a link to update database record (like oracle workflow in selfservice).
    This is applied for approval process.
    Rather than the approval will log onto the application, he will click on the attachment or link then the update statement will fire.
    Is it  possible?

    You didn't add a forms version, so this is hard to guess. If you are on 10g and higher then you are using Oracle Application Server; in the installation there is the mod_plsql apache module included as well:
    http://docs.oracle.com/cd/B14099_19/web.1012/b14010/concept.htm
    so you could simply call a stored procedure via a HTTP request which updates your record. If you are on a lower version of forms you could make use of the free mod_owa module which you could configure with a plain apache installation on e.g. your database server: https://oss.oracle.com/projects/mod_owa/dist/documentation/modowa.htm
    you should implement some sort of authentication as well; both mod_owa and mod_plsql also have the facility to do so via +owa_custom+
    OWA_CUSTOM
    (see the OwaAuth directive in mod_owa for example).
    Of course you could do the very same via a custom Java Servlet; however you'd have to implement the database connection pool, the call of your stored procedure, the authentication e.g. as well which you would get for free with the apache modules.
    cheers

  • Database Record Filtering

    Hey,
    I was if there is a way to filter my repeat region by fields.
    Is there a way in which i can have the field titles (top of the records) act as a filtering system?
    E.g. If i click on Author, my recordset will filter by author ascending?
    Below is an image of my current inventory setup.
    Also, is there a way which I can add a search bar which will only show records which have the same information as what was searched for?
    Any help would be very much appreciated!
    Thank you!

    >How would I go about being able to sort the records just by clicking the headings,
    Dreamweaver does not provide a facility for this. There are two basic methods
    1) Submit the item clicked back to the query which modifies the Order By clause which sorts the resultset.
    2) Use DOM table sorting techniques. I like this better as it is more responsive
    sorttable: Make all your tables sortable
    >how would I add a search bar which will only show the records with what was searched for?
    You could use DW's search and result page behaviors
    Dreamweaver Help | Building search and results pages
    But the sooner you move away from obsolete server behaviors and onto modern coding techniques the better.

  • Check/uncheck record results on more than one step at a time

    I have one hundred plus sequence files and several thousand steps total. Checking and un-checking record results one step at a time takes a long time. I'd like to be able to select several steps at a time then check or un check the "Record Results" option for all those steps at once. How do I do this? I'm using TestStand 2.0

    Hi Kevin,
    Thanks for contacting National Instruments.
    Do you want to disable result recording for ALL sequences on this station? If so, you can turn on this option in the TestStand sequence editor (Configure >> Station Options, turn ON checkbox "Disable result recording for all sequences").
    However, if you only want to do this for selected sequence files, then Ray is correct - you would need to write an external routine that will automate this for you. Attached is a zipfile containing a VBScript that will iterate through one sequence file ("c:\test.seq") and change all steps (all sequences, including Main/Setup/Cleanup) to turn off "Record Results". It first saves a backup copy of the sequence file, makes the changes, then save
    s the modified sequence file. You can enhance this script to work for more than one sequence file by using Microsoft's FileSystemObject.
    The VBScript uses a DLL I created, which exposes the TestStand 2.0 Engine object as an ActiveX DLL. Before you can run the VBScript, you will need to register this DLL:
    regsvr32 TSEngine.dll
    Then, the VBScript can be executed just by double-clicking it. Hopefully this helps get you started toward creating an automated way of solving this problem!
    David Mc.
    National Instruments
    Attachments:
    ts2seqfiles.zip ‏4 KB

  • Saving database records in a flat file

    I am trying to save data from relational database into a flat file and then read back records based on the certain criteria.
    What will be a good approach for me? Should I use random access files or sequential files for storing and
    retrieving data or is there some other technique that is more efficient that I can use.
    Thanks

    I don't think that reading database records from a flat file based on certain criteria is a good approach, no matter how you produce the flat file. Using a second database table makes more sense to me, especially since you already have database software available and ready for use.
    (You asked about a "good approach" and then you wanted a technique that was "more efficient". Those two aren't the same thing at all.)

Maybe you are looking for