no Steve, I agree with you. I'm just airing some of the feeble arguments they raise as an excuse because they shy away from proper db design when they come across a many-to-many relationship or an outer join and they panic.
I have to drag them kicking and screaming to the realisation after they spend WAY too long comming up with some snazzy string manip method that "works" (until we load test it and it falls down in a heap). I have seen string manip methods used for recursive queries on a table (self join) to create a hierarchy which seemed the easiest way to do it - but that's the exception to the rule. just my small copper coin's worth cheers barry.b -----Original Message----- From: Steve Onnis [mailto:[EMAIL PROTECTED] Sent: Wednesday, 25 June 2003 11:53 AM To: CFAussie Mailing List Subject: [cfaussie] Re: Cant work out SQL Query error. "Sure they've got a point about extra processing for every join but the convenience far outweighs treating it like a spreadsheet!" So your saying that SELECT property_id FROM property_details property_features = '1' OR property_features LIKE '%,1' OR property_features LIKE '1,%' OR property_features LIKE '%,1,%' OR property_features = '2' OR property_features LIKE '%,2' OR property_features LIKE '2,%' OR property_features LIKE '%,2,%' will run faster than SELECT property_details.property_id FROM property_details, propertyFeaturesToProperties WHERE propertyFeaturesToProperties.propertyFeatureID IN (#form.features#) AND propertyFeaturesToProperties.propertyID = properties.PropertyID Hmmm I beg to differ Not to mention if you delete, in this case a property feature, you will need to check each entry in the table just to see if it has that value to remove it Not my idea of fun -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Beattie, Barry Sent: Wednesday, June 25, 2003 11:43 AM To: CFAussie Mailing List Subject: [cfaussie] Re: Cant work out SQL Query error. Yeah agreed! I get students really shying away pulling records that are made up of 3 tables or more. dunno why. They think they're really cleaver using string processing to manip the records instead of using the inbuilt strengths of all (decent) databases. Sure they've got a point about extra processing for every join but the convenience far outweighs treating it like a spreadsheet! just my 2c barry.b -----Original Message----- From: Steve Onnis [mailto:[EMAIL PROTECTED] Sent: Wednesday, 25 June 2003 11:35 AM To: CFAussie Mailing List Subject: [cfaussie] Re: Cant work out SQL Query error. I am sorry to say but thats what you get for using lists in databases to hold references to other tables primary keys. In my optinion, if you are going to have a database that requires to store relationship information, then lookup tables should be used. Want to know why? Just look at this thread Messy messy Much easier SELECT property_details.property_id FROM property_details, propertyFeaturesToProperties WHERE propertyFeaturesToProperties.propertyFeatureID IN (#form.features#) AND propertyFeaturesToProperties.propertyID = properties.PropertyID This way is not only easier to code, it's more efficient and much easier to maintain your database Steve -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Pragnesh Sent: Wednesday, June 25, 2003 11:22 AM To: CFAussie Mailing List Subject: [cfaussie] Re: Cant work out SQL Query error. True but property_features is a text field as it can have several features. 1 record can have multiple features. "Taco Fleur" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] I am assuming your form.features is a list of IDs ? SELECT property_id from property_details WHERE (pkBuildingID IN (1, 2, 3)) Code would be SELECT property_id from property_details WHERE (pkBuildingID IN (#form.features#)) Is a lot easier and works many times faster.. -----Original Message----- From: Pragnesh [mailto:[EMAIL PROTECTED] Sent: Wednesday, 25 June 2003 11:15 AM To: CFAussie Mailing List Subject: [cfaussie] Re: Cant work out SQL Query error. Still doesnt work. Am generating the where clause dynamically featurestr=""; for (i = 1; i LTE listlen(form.features); i = i+1) { fid=ListGetAt(form.features,i,","); featurestr=featurestr & "property_features = '" & fid & "'"; featurestr=featurestr & " OR property_features LIKE '%," & fid & "'"; featurestr=featurestr & " OR property_features LIKE '" & fid & ",%'"; featurestr=featurestr & " OR property_features LIKE '%," & fid & ",%'"; Am getting this as the output: property_features = '1' OR property_features LIKE '%,1' OR property_features LIKE '1,%' OR property_features LIKE '%,1,%' OR property_features = '2' OR property_features LIKE '%,2' OR property_features LIKE '2,%' OR property_features LIKE '%,2,%' When I use it in a query, it throws an error <cfquery name="getsearchresult1" datasource="#config.datasource#"> SELECT property_id from property_details where #featurestr# </cfquery> <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] Single quotes instead of double, but also: Change OR property_features LIKE "2" To: OR property_features = '2' Steve c -----Original Message----- From: Pragnesh [mailto:[EMAIL PROTECTED] Sent: Wednesday, 25 June 2003 10:52 AM To: CFAussie Mailing List Subject: [cfaussie] Cant work out SQL Query error. HI All, Cannot work out why the sql query is throwing an error. Worst thing is when I execute the query in MS ACCESS it runs but thro CF it throws this error. Any suggestions would be appreciated. Error: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 8. Hint: The cause of this error is usually that your query contains a reference to a field which does not exist. You should verify that the fields included in your query exist and that you have specified their names correctly. SQL Query is: SELECT property_id from property_details where property_features LIKE "1" OR property_features LIKE "%,1" OR property_features LIKE "1,%" OR property_features LIKE "%,1,%" OR property_features LIKE "2" OR property_features LIKE "%,2" OR property_features LIKE "2,%" OR property_features LIKE "%,2,%" --- You are currently subscribed to cfaussie as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] MX Downunder AsiaPac DevCon - http://mxdu.com/ --- You are currently subscribed to cfaussie as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] MX Downunder AsiaPac DevCon - http://mxdu.com/ ---------------------------------------------------------------------------- This email, together with any attachments, is intended for the named recipient(s) only and may contain privileged and confidential information. If received in error, please inform the sender as quickly as possible and delete this email and any copies from your computer system network. If not an intended recipient of this email, you must not copy, distribute or rely upon it and any form of disclosure, modification, distribution and/or publication of this email is prohibited. Unless stated otherwise, this email represents only the views of the sender and not the views of the Queensland Government. ---------------------------------------------------------------------------- --- You are currently subscribed to cfaussie as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] MX Downunder AsiaPac DevCon - http://mxdu.com/ --- You are currently subscribed to cfaussie as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] MX Downunder AsiaPac DevCon - http://mxdu.com/ --- You are currently subscribed to cfaussie as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] MX Downunder AsiaPac DevCon - http://mxdu.com/ --- You are currently subscribed to cfaussie as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] MX Downunder AsiaPac DevCon - http://mxdu.com/ --- You are currently subscribed to cfaussie as: [EMAIL PROTECTED] To unsubscribe send a blank email to [EMAIL PROTECTED] MX Downunder AsiaPac DevCon - http://mxdu.com/
