Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
stroek
Starting Member
18 Posts |
Posted - 2008-08-12 : 04:13:00
|
Is it exceptional, a query of this size?and is it written on a descent way? quote: DECLARE @ModuleID intset @ModuleID=38DECLARE @MFLangLanguage intset @MFLangLanguage=2SELECTCASE WHEN (LanguagesCreated_TitelFr.Counter > 0 OR LanguagesCreated_TekstFr.Counter > 0) AND (LanguagesCreated_TitelNl.Counter > 0 OR LanguagesCreated_TekstNl.Counter > 0) THEN 'NL/FR' WHEN LanguagesCreated_TitelFr.Counter > 0 OR LanguagesCreated_TekstFr.Counter > 0 THEN 'FR' WHEN LanguagesCreated_TitelNl.Counter > 0 OR LanguagesCreated_TekstNl.Counter > 0 THEN 'NL' ELSE '-'END AS 'LanguagesUsed',CM_TBL_Titel.DataText as Titel,CM_TBL_User.DataInt as [User],CM_TBL_ContactGroup.DataText as ContactGroup,CM_TBL_Type.DataInt as Type,CM_TBL_DateCreated.DataDate as DateCreated,CM_TBL_DateSend.DataDate as DateSend,CM_TBL_Status.DataInt as Status,CM_TBL_Validate.DataBit as Validate,CM_TBL_Type_OptionValue.DataText as TypeOptionValue,CM_TBL_Status_OptionValue.DataText as StatusOptionValue,CM_TBL_DateValidated.DataDate as DateValidated,CM_TBL_Tekst.DataText as Tekst,CM_TBL_UserData.UserName as UserName,CM_TBL_UserData.UserFirstName as UserFirstName,CM_TBL_UserData.UserLEvel as UserLEvel,Triooo_SM_Pro.ID AS ProIDFROMTriooo_SM_Pro FULL OUTER JOIN--Titel(select * from Triooo_SM_FieldValuesLangText whereTriooo_SM_FieldValuesLangText.ModuleFieldID = 12and Triooo_SM_FieldValuesLangText.Lang = @MFLangLanguage ) CM_TBL_Titel ONTriooo_SM_Pro.ID = CM_TBL_Titel.RecordID FULL OUTER JOIN--LanguagesCreated Titel NL(select RecordID,Len(DataText) as counter from Triooo_SM_FieldValuesLangText whereTriooo_SM_FieldValuesLangText.ModuleFieldID = 12and Triooo_SM_FieldValuesLangText.Lang = 1 ) LanguagesCreated_TitelNl ONTriooo_SM_Pro.ID = LanguagesCreated_TitelNl.RecordID FULL OUTER JOIN--LanguagesCreated Titel FR(select RecordID,Len(DataText) as counter from Triooo_SM_FieldValuesLangText whereTriooo_SM_FieldValuesLangText.ModuleFieldID = 12and Triooo_SM_FieldValuesLangText.Lang = 2 ) LanguagesCreated_TitelFr ONTriooo_SM_Pro.ID = LanguagesCreated_TitelFr.RecordID FULL OUTER JOIN--Tekst(select * from Triooo_SM_FieldValuesLangText whereTriooo_SM_FieldValuesLangText.ModuleFieldID = 28and Triooo_SM_FieldValuesLangText.Lang = @MFLangLanguage ) CM_TBL_Tekst ONTriooo_SM_Pro.ID = CM_TBL_Tekst.RecordID FULL OUTER JOIN--LanguagesCreated Tekst NL(select RecordID,Len(DataText) as counter from Triooo_SM_FieldValuesLangText whereTriooo_SM_FieldValuesLangText.ModuleFieldID = 28and Triooo_SM_FieldValuesLangText.Lang = 1 ) LanguagesCreated_TekstNl ONTriooo_SM_Pro.ID = LanguagesCreated_TekstNl.RecordID FULL OUTER JOIN--LanguagesCreated Tekst FR(select RecordID,Len(DataText) as counter from Triooo_SM_FieldValuesLangText whereTriooo_SM_FieldValuesLangText.ModuleFieldID = 28and Triooo_SM_FieldValuesLangText.Lang = 2 ) LanguagesCreated_TekstFr ONTriooo_SM_Pro.ID = LanguagesCreated_TekstFr.RecordID FULL OUTER JOIN--User(select * from Triooo_SM_FieldValues whereTriooo_SM_FieldValues.ModuleFieldID = 13 ) CM_TBL_User ONTriooo_SM_Pro.ID = CM_TBL_User.RecordID FULL OUTER JOIN--ContactGroup(select * from Triooo_SM_FieldValues whereTriooo_SM_FieldValues.ModuleFieldID = 14 ) CM_TBL_ContactGroup ONTriooo_SM_Pro.ID = CM_TBL_ContactGroup.RecordID FULL OUTER JOIN--Type(select * from Triooo_SM_FieldValues whereTriooo_SM_FieldValues.ModuleFieldID = 16 ) CM_TBL_Type ONTriooo_SM_Pro.ID = CM_TBL_Type.RecordID FULL OUTER JOIN--Type Option Value(Select Triooo_SM_ModuleFieldOptionLangText.DataText as DataText, Triooo_SM_ModuleFieldOptions.ID as ID from Triooo_SM_ModuleFieldOptions INNER JOIN Triooo_SM_ModuleFieldOptionLangText ONTriooo_SM_ModuleFieldOptionLangText.ModuleOptionFieldID = Triooo_SM_ModuleFieldOptions.IDwhere ModuleFieldID = 16 AND Triooo_SM_ModuleFieldOptionLangText.Lang = @MFLangLanguage ) CM_TBL_Type_OptionValue ON CM_TBL_Type.DataInt = CM_TBL_Type_OptionValue.ID FULL OUTER JOIN --DateCreated(select * from Triooo_SM_FieldValues whereTriooo_SM_FieldValues.ModuleFieldID = 18 ) CM_TBL_DateCreated ONTriooo_SM_Pro.ID = CM_TBL_DateCreated.RecordID FULL OUTER JOIN--DateSend(select * from Triooo_SM_FieldValues whereTriooo_SM_FieldValues.ModuleFieldID = 19 ) CM_TBL_DateSend ONTriooo_SM_Pro.ID = CM_TBL_DateSend.RecordID FULL OUTER JOIN--Status(select * from Triooo_SM_FieldValues whereTriooo_SM_FieldValues.ModuleFieldID = 20 ) CM_TBL_Status ONTriooo_SM_Pro.ID = CM_TBL_Status.RecordID FULL OUTER JOIN--Status Option Value(Select Triooo_SM_ModuleFieldOptionLangText.DataText as DataText, Triooo_SM_ModuleFieldOptions.ID as IDfrom Triooo_SM_ModuleFieldOptions INNER JOIN Triooo_SM_ModuleFieldOptionLangText ONTriooo_SM_ModuleFieldOptionLangText.ModuleOptionFieldID = Triooo_SM_ModuleFieldOptions.IDwhere ModuleFieldID = 20 AND Triooo_SM_ModuleFieldOptionLangText.Lang = @MFLangLanguage ) CM_TBL_Status_OptionValue ON CM_TBL_Status.DataInt = CM_TBL_Status_OptionValue.ID FULL OUTER JOIN --Validate(select * from Triooo_SM_FieldValues whereTriooo_SM_FieldValues.ModuleFieldID = 21 ) CM_TBL_Validate ONTriooo_SM_Pro.ID = CM_TBL_Validate.RecordID FULL OUTER JOIN--DateValidated(select * from Triooo_SM_FieldValues whereTriooo_SM_FieldValues.ModuleFieldID = 30 ) CM_TBL_DateValidated ONTriooo_SM_Pro.ID = CM_TBL_DateValidated.RecordID INNER JOIN-- Triooo_SM_Users(select Triooo_SM_Users.Name as UserName, Triooo_SM_Users.FirstName as UserFirstName, Triooo_SM_Users.ID as UserID, Triooo_SM_UserLevels.UserLEvel as UserLEvelfrom Triooo_SM_Users INNER JOIN Triooo_SM_UserLevels ONTriooo_SM_Users.UserLevel = Triooo_SM_UserLevels.ID) CM_TBL_UserData ONCM_TBL_User.DataInt = CM_TBL_UserData.UserID WHERE Triooo_SM_Pro.ModuleID = @ModuleID
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2008-08-12 : 05:17:48
|
Its a rather big query. To answer second part we need to know what you're trying implement by the above code. can you specify with some sample data what your requirement was so that we can tell if it can be written better. As of now i can see some redundant code parts and feels like it can be rewritten in a better way. |
 |
|
stroek
Starting Member
18 Posts |
Posted - 2008-08-12 : 06:40:53
|
Hello,Here you can download a schedule of my tables (short version)http://www.triooo.be/Downloads/SQLquestionA3.PDF 280kbExplanation:-Store Promotions (Triooo_SM_ModuleFields) (Promo ID)-Store Promo data (Triooo_SM_FieldValues)-Store Promo text (Triooo_SM_ModuleFieldLangText)The meaning is that I can use this table structure for several applications (Modules)I hope it is a little bit clearSo, do you think it is a good solution? |
 |
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2008-08-12 : 07:42:10
|
Seeing the schema, I will have to say the query could need some tweaking and tuning  E 12°55'05.25"N 56°04'39.16" |
 |
|
stroek
Starting Member
18 Posts |
Posted - 2008-08-12 : 07:48:17
|
any proposals |
 |
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
|
|
|
|
|
|