Patent ID: 7844587

Claim:
A method of dynamically building SQL queries for use in a metadata-driven relational database system, the method comprising: storing, in a database associated with the database system, metadata lookup tables that describe objects and data that are stored in the database according to a first object schema, the metadata lookup tables stored in the database according to a second object schema allowing types of objects to be added to the first lookup table without changes to the first object schema, the second schema including a first lookup table configured to store different types of lookup values, a second lookup table configured to store the lookup values for the first table, and a third lookup table configured to store relationships between lookup values in the second lookup table; generating, at one or more computer systems associated with the database system, information configured for displaying a query builder page and forwarding the information to a client system over a network connection, said page including: (a) at least one search parameter selection field configured as a dropdown menu wherein a predetermined searchable type is enabled to be selected from a list of searchable types populated by the first lookup table in the metadata lookup tables, (b) at least one operator selection field separate from the at least one search parameter selection field, and (c) at least one value selection field configured as a dropdown list and a text expression box wherein at least one value is enabled to be selected from a list of values populated by the second lookup table in the metadata lookup tables or entered by a user as an expression; receiving, at the one or more computer systems, a user selection of the predetermined relationship type between items in the at least one search parameter selection field, a user selection of a first operator in the at least one operator selection field, and a user selection of a first value representing an item in the at least one value selection field; dynamically building an SQL query with one or more processors associated with the one or more computer systems based on the user selections in the at least one parameter selection field, at least one operator selection field, and at least one value selection field; and storing the user selections in the at least one parameter selection field, the at least one operator selection field, and the at least one value selection field in the database associated with the database system, wherein the user selections are able to be extracted from the database and used to re-build and optimize another SQL query at a subsequent time for an appropriate user.