--- Fred Williams <[EMAIL PROTECTED]> wrote:
> Wow!  Talk about obfuscated code!  I didn't even try to dig deeper than
> a quick scan, but could this abomination be broken into multiple update
> queries?  On the surface it looks like each "group" is unique.  If so,
> wouldn't a transaction with multiple update statements be much more
> efficient and a much lighter load on resources on a step by step basis?
> I damn well know it would be much more pleasing to the eye! :-)

It's not complicated at all.

The UPDATE statement in the original example is a way to compensate
for SQLite's inability to perform a join on another table before doing 
an UPDATE. That's why the author needed all those inner selects each 
returning a single value.

 http://www.sqlite.org/lang_update.html

Had the MySQL UPDATE syntax been available, the same UPDATE statement
could be expressed in less than 10% of the SQL in the original 
SQL statement, with far fewer database accesses due to the reduced 
number of SQL subqueries.

 http://dev.mysql.com/doc/refman/5.0/en/update.html

Another alternative is for the SQLite queryer to first query all those
other tables first and then programmatically (via C or whatever)
construct and execute the UPDATE statement. But I can understand why 
anyone would want to avoid this extra work just to perform a 
straight-forward UPDATE.

> 
> Fred
> 
> > -----Original Message-----
> > From: RB Smissaert [mailto:[EMAIL PROTECTED]
> > Sent: Sunday, January 28, 2007 12:07 PM
> > To: sqlite-users@sqlite.org
> > Subject: [sqlite] Limit statement size?
> >
> >
> > Is there any limit on the size of the SQL statements in SQLite?
> > Didn't think this would come into play, but have now come across this
> > query and wonder if this needs considering:
> >
> > UPDATE A3Test115_J SET ENTRY_ID_E2 = (SELECT ENTRY_ID FROM
> > GROUP_2 T WHERE
> > PATIENT_ID = T.PID), READ_CODE_E2 = (SELECT READ_CODE FROM
> > GROUP_2 T WHERE
> > PATIENT_ID = T.PID), TERM_TEXT_E2 = (SELECT TERM_TEXT FROM
> > GROUP_2 T WHERE
> > PATIENT_ID = T.PID), START_DATE_E2 = (SELECT START_DATE FROM
> > GROUP_2 T WHERE
> > PATIENT_ID = T.PID), ADDED_DATE_E2 = (SELECT ADDED_DATE FROM
> > GROUP_2 T WHERE
> > PATIENT_ID = T.PID), NUMERIC_VALUE_E2 = (SELECT NUMERIC_VALUE
> > FROM GROUP_2 T
> > WHERE PATIENT_ID = T.PID), ENTRY_ID_E3 = (SELECT ENTRY_ID
> > FROM GROUP_3 T
> > WHERE PATIENT_ID = T.PID), READ_CODE_E3 = (SELECT READ_CODE
> > FROM GROUP_3 T
> > WHERE PATIENT_ID = T.PID), TERM_TEXT_E3 = (SELECT TERM_TEXT
> > FROM GROUP_3 T
> > WHERE PATIENT_ID = T.PID), START_DATE_E3 = (SELECT START_DATE
> > FROM GROUP_3 T
> > WHERE PATIENT_ID = T.PID), ADDED_DATE_E3 = (SELECT ADDED_DATE
> > FROM GROUP_3 T
> > WHERE PATIENT_ID = T.PID), NUMERIC_VALUE_E3 = (SELECT
> > NUMERIC_VALUE FROM
> > GROUP_3 T WHERE PATIENT_ID = T.PID), ENTRY_ID_E4 = (SELECT
> > ENTRY_ID FROM
> > GROUP_4 T WHERE PATIENT_ID = T.PID), READ_CODE_E4 = (SELECT
> > READ_CODE FROM
> > GROUP_4 T WHERE PATIENT_ID = T.PID), TERM_TEXT_E4 = (SELECT
> > TERM_TEXT FROM
> > GROUP_4 T WHERE PATIENT_ID = T.PID), START_DATE_E4 = (SELECT
> > START_DATE FROM
> > GROUP_4 T WHERE PATIENT_ID = T.PID), ADDED_DATE_E4 = (SELECT
> > ADDED_DATE FROM
> > GROUP_4 T WHERE PATIENT_ID = T.PID), NUMERIC_VALUE_E4 = (SELECT
> > NUMERIC_VALUE FROM GROUP_4 T WHERE PATIENT_ID = T.PID), ENTRY_ID_E5 =
> > (SELECT ENTRY_ID FROM GROUP_5 T WHERE PATIENT_ID = T.PID),
> > READ_CODE_E5 =
> > (SELECT READ_CODE FROM GROUP_5 T WHERE PATIENT_ID = T.PID),
> > TERM_TEXT_E5 =
> > (SELECT TERM_TEXT FROM GROUP_5 T WHERE PATIENT_ID = T.PID),
> > START_DATE_E5 =
> > (SELECT START_DATE FROM GROUP_5 T WHERE PATIENT_ID = T.PID),
> > ADDED_DATE_E5 =
> > (SELECT ADDED_DATE FROM GROUP_5 T WHERE PATIENT_ID = T.PID),
> > NUMERIC_VALUE_E5 = (SELECT NUMERIC_VALUE FROM GROUP_5 T WHERE
> > PATIENT_ID =
> > T.PID), ENTRY_ID_E6 = (SELECT ENTRY_ID FROM GROUP_6 T WHERE
> > PATIENT_ID =
> > T.PID), READ_CODE_E6 = (SELECT READ_CODE FROM GROUP_6 T WHERE
> > PATIENT_ID =
> > T.PID), TERM_TEXT_E6 = (SELECT TERM_TEXT FROM GROUP_6 T WHERE
> > PATIENT_ID =
> > T.PID), START_DATE_E6 = (SELECT START_DATE FROM GROUP_6 T
> > WHERE PATIENT_ID =
> > T.PID), ADDED_DATE_E6 = (SELECT ADDED_DATE FROM GROUP_6 T
> > WHERE PATIENT_ID =
> > T.PID), NUMERIC_VALUE_E6 = (SELECT NUMERIC_VALUE FROM GROUP_6 T WHERE
> > PATIENT_ID = T.PID), ENTRY_ID_E7 = (SELECT ENTRY_ID FROM
> > GROUP_7 T WHERE
> > PATIENT_ID = T.PID), READ_CODE_E7 = (SELECT READ_CODE FROM
> > GROUP_7 T WHERE
> > PATIENT_ID = T.PID), TERM_TEXT_E7 = (SELECT TERM_TEXT FROM
> > GROUP_7 T WHERE
> > PATIENT_ID = T.PID), START_DATE_E7 = (SELECT START_DATE FROM
> > GROUP_7 T WHERE
> > PATIENT_ID = T.PID), ADDED_DATE_E7 = (SELECT ADDED_DATE FROM
> > GROUP_7 T WHERE
> > PATIENT_ID = T.PID), NUMERIC_VALUE_E7 = (SELECT NUMERIC_VALUE
> > FROM GROUP_7 T
> > WHERE PATIENT_ID = T.PID), ENTRY_ID_E8 = (SELECT ENTRY_ID
> > FROM GROUP_8 T
> > WHERE PATIENT_ID = T.PID), READ_CODE_E8 = (SELECT READ_CODE
> > FROM GROUP_8 T
> > WHERE PATIENT_ID = T.PID), TERM_TEXT_E8 = (SELECT TERM_TEXT
> > FROM GROUP_8 T
> > WHERE PATIENT_ID = T.PID), START_DATE_E8 = (SELECT START_DATE
> > FROM GROUP_8 T
> > WHERE PATIENT_ID = T.PID), ADDED_DATE_E8 = (SELECT ADDED_DATE
> > FROM GROUP_8 T
> > WHERE PATIENT_ID = T.PID), NUMERIC_VALUE_E8 = (SELECT
> > NUMERIC_VALUE FROM
> > GROUP_8 T WHERE PATIENT_ID = T.PID), ENTRY_ID_E9 = (SELECT
> > ENTRY_ID FROM
> > GROUP_9 T WHERE PATIENT_ID = T.PID), READ_CODE_E9 = (SELECT
> > READ_CODE FROM
> > GROUP_9 T WHERE PATIENT_ID = T.PID), TERM_TEXT_E9 = (SELECT
> > TERM_TEXT FROM
> > GROUP_9 T WHERE PATIENT_ID = T.PID), START_DATE_E9 = (SELECT
> > START_DATE FROM
> > GROUP_9 T WHERE PATIENT_ID = T.PID), ADDED_DATE_E9 = (SELECT
> > ADDED_DATE FROM
> > GROUP_9 T WHERE PATIENT_ID = T.PID), NUMERIC_VALUE_E9 = (SELECT
> > NUMERIC_VALUE FROM GROUP_9 T WHERE PATIENT_ID = T.PID), ENTRY_ID_E10 =
> > (SELECT ENTRY_ID FROM GROUP_10 T WHERE PATIENT_ID = T.PID),
> > READ_CODE_E10 =
> > (SELECT READ_CODE FROM GROUP_10 T WHERE PATIENT_ID = T.PID),
> > TERM_TEXT_E10 =
> > (SELECT TERM_TEXT FROM GROUP_10 T WHERE PATIENT_ID = T.PID),
> > START_DATE_E10
> > = (SELECT START_DATE FROM GROUP_10 T WHERE PATIENT_ID = T.PID),
> > ADDED_DATE_E10 = (SELECT ADDED_DATE FROM GROUP_10 T WHERE PATIENT_ID =
> > T.PID), NUMERIC_VALUE_E10 = (SELECT NUMERIC_VALUE FROM
> > GROUP_10 T WHERE
> > PATIENT_ID = T.PID), ENTRY_ID_E11 = (SELECT ENTRY_ID FROM
> > GROUP_11 T WHERE
> > PATIENT_ID = T.PID), READ_CODE_E11 = (SELECT READ_CODE FROM
> > GROUP_11 T WHERE
> > PATIENT_ID = T.PID), TERM_TEXT_E11 = (SELECT TERM_TEXT FROM
> > GROUP_11 T WHERE
> > PATIENT_ID = T.PID), START_DATE_E11 = (SELECT START_DATE FROM
> > GROUP_11 T
> > WHERE PATIENT_ID = T.PID), ADDED_DATE_E11 = (SELECT
> > ADDED_DATE FROM GROUP_11
> > T WHERE PATIENT_ID = T.PID), NUMERIC_VALUE_E11 = (SELECT
> > NUMERIC_VALUE FROM
> > GROUP_11 T WHERE PATIENT_ID = T.PID), ENTRY_ID_E12 = (SELECT
> > ENTRY_ID FROM
> > GROUP_12 T WHERE PATIENT_ID = T.PID), READ_CODE_E12 = (SELECT
> > READ_CODE FROM
> > GROUP_12 T WHERE PATIENT_ID = T.PID), TERM_TEXT_E12 = (SELECT
> > TERM_TEXT FROM
> > GROUP_12 T WHERE PATIENT_ID = T.PID), START_DATE_E12 =
> > (SELECT START_DATE
> > FROM GROUP_12 T WHERE PATIENT_ID = T.PID), ADDED_DATE_E12 = (SELECT
> > ADDED_DATE FROM GROUP_12 T WHERE PATIENT_ID = T.PID),
> > NUMERIC_VALUE_E12 =
> > (SELECT NUMERIC_VALUE FROM GROUP_12 T WHERE PATIENT_ID = T.PID),
> > ENTRY_ID_E13 = (SELECT ENTRY_ID FROM GROUP_13 T WHERE
> > PATIENT_ID = T.PID),
> > READ_CODE_E13 = (SELECT READ_CODE FROM GROUP_13 T WHERE
> > PATIENT_ID = T.PID),
> > TERM_TEXT_E13 = (SELECT TERM_TEXT FROM GROUP_13 T WHERE
> > PATIENT_ID = T.PID),
> > START_DATE_E13 = (SELECT START_DATE FROM GROUP_13 T WHERE PATIENT_ID =
> > T.PID), ADDED_DATE_E13 = (SELECT ADDED_DATE FROM GROUP_13 T
> > WHERE PATIENT_ID
> > = T.PID), NUMERIC_VALUE_E13 = (SELECT NUMERIC_VALUE FROM
> > GROUP_13 T WHERE
> > PATIENT_ID = T.PID), ENTRY_ID_E14 = (SELECT ENTRY_ID FROM
> > GROUP_14 T WHERE
> > PATIENT_ID = T.PID), READ_CODE_E14 = (SELECT READ_CODE FROM
> > GROUP_14 T WHERE
> > PATIENT_ID = T.PID), TERM_TEXT_E14 = (SELECT TERM_TEXT FROM
> > GROUP_14 T WHERE
> > PATIENT_ID = T.PID), START_DATE_E14 = (SELECT START_DATE FROM
> > GROUP_14 T
> > WHERE PATIENT_ID = T.PID), ADDED_DATE_E14 = (SELECT
> > ADDED_DATE FROM GROUP_14
> > T WHERE PATIENT_ID = T.PID), NUMERIC_VALUE_E14 = (SELECT
> > NUMERIC_VALUE FROM
> > GROUP_14 T WHERE PATIENT_ID = T.PID), ENTRY_ID_E15 = (SELECT
> > ENTRY_ID FROM
> > GROUP_15 T WHERE PATIENT_ID = T.PID), READ_CODE_E15 = (SELECT
> > READ_CODE FROM
> > GROUP_15 T WHERE PATIENT_ID = T.PID), TERM_TEXT_E15 = (SELECT
> > TERM_TEXT FROM
> > GROUP_15 T WHERE PATIENT_ID = T.PID), START_DATE_E15 =
> > (SELECT START_DATE
> > FROM GROUP_15 T WHERE PATIENT_ID = T.PID), ADDED_DATE_E15 = (SELECT
> > ADDED_DATE FROM GROUP_15 T WHERE PATIENT_ID = T.PID),
> > NUMERIC_VALUE_E15 =
> > (SELECT NUMERIC_VALUE FROM GROUP_15 T WHERE PATIENT_ID = T.PID)
> >
> >
> > RBS



 
____________________________________________________________________________________
Don't get soaked.  Take a quick peak at the forecast
with the Yahoo! Search weather shortcut.
http://tools.search.yahoo.com/shortcuts/#loc_weather

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to