உள்ளமை வினவல்கள். தொகுப்பு வினவல்களுடன் பணிபுரியும் உள்ளமை வினவல்கள்

உள்ளமை வினவல்கள். தொகுப்பு வினவல்களுடன் பணிபுரியும் உள்ளமை வினவல்கள்

இந்த கட்டுரை SQL மொழியை நன்கு அறிந்த வாசகர்களுக்காக வடிவமைக்கப்பட்டுள்ளது.

பதிப்பு 8 முதல் பயன்படுத்தப்படும் 1C வினவல் மொழி, இன்று தரவுத்தளங்களுடன் பணிபுரிய ஒரு பயனுள்ள கருவியாக மாறியுள்ளது, இது அவற்றிலிருந்து படிக்க அனுமதிக்கிறது, ஆனால் எழுத முடியாது. தொடரியல் ரீதியாக, வினவல் மொழி SQL மொழிக்கு மிகவும் ஒத்திருக்கிறது, ஆனால் ரஷ்ய மொழியில்.

முக்கிய வினவல் மொழிக்கும் SQL ஆபரேட்டர்களுக்கும் இடையிலான கடிதப் பரிமாற்ற அட்டவணை கீழே உள்ளது:

1C வினவல் மொழி ஆபரேட்டர்கள்

SQL அறிக்கை

பல்வேறு

கலவை

குழு மூலம்

இணைக்கவும்

வரிசைப்படுத்து

மேலும் இது முழுமையான பட்டியல் அல்ல. கிடைக்கக்கூடிய வினவல் மொழி ஆபரேட்டர்கள் பற்றிய முழுமையான குறிப்புத் தகவலை வினவல் வடிவமைப்பாளரில் பெறலாம், இது கீழே விவாதிக்கப்படும்.

நிரல் குறியீட்டிலிருந்து 1C கோரிக்கையை செயல்படுத்துவது "கோரிக்கை" என்ற உள்ளமைக்கப்பட்ட மொழிப் பொருளைப் பயன்படுத்தி மேற்கொள்ளப்படுகிறது. உள்ளமைக்கப்பட்ட நிரலாக்க மொழியைப் பயன்படுத்தி தரவுத்தள வினவலை எழுதுவதற்கான எடுத்துக்காட்டு:

கோரிக்கை = புதிய கோரிக்கை; Query.Text = "தேர்ந்தெடு தேர்ந்தெடு = Query.Run().Select(); Selection.Next() Loop // தேர்வுச் செயலாக்கத்தைச் செருகவும் SelectionDetailedRecords EndCycle;

"ரன்" முறையானது வினவலை செயல்படுத்துகிறது, "தேர்ந்தெடு" முறையானது "SelectFromQueryResult" வகையின் மதிப்பை வழங்குகிறது. மதிப்புகளின் அட்டவணையை வழங்கும், இறக்கும் முறையையும் நீங்கள் பயன்படுத்தலாம்.

கோரிக்கை அளவுருக்கள் "அளவுருக்கள்" சொத்தில் சேமிக்கப்படுகின்றன (இந்த விஷயத்தில், இது ஒரு கட்டமைப்பாகும், எனவே அனைத்து கட்டமைப்பு முறைகளும் இங்கே பொருந்தும் - செருகவும், நீக்கவும், முதலியன).

"Query.Parameters.Insert" ("டைரக்டரி", DirectoryLink) அளவுருவை அமைப்பதற்கான எடுத்துக்காட்டு. கோரிக்கையில், நீங்கள் "&அடைவு" ஐப் பயன்படுத்தி அளவுருக்களை அணுகலாம். அளவுருக்களைப் பயன்படுத்தி கோரிக்கையின் எடுத்துக்காட்டு கீழே உள்ளது:

கோரிக்கை = புதிய கோரிக்கை; Query.Text = "தேர்ந்தெடுக்கவும் Query.Parameters.Insert("Directory", DirectoryLink); தேர்ந்தெடு = Query.Run().Select(); Selection.Next() Loop // தேர்வுச் செயலாக்கத்தைச் செருகவும் SelectionDetailedRecords EndCycle;

வினவல் மொழியானது தரவுத்தளத்திலிருந்து தரவைப் படிப்பதற்காக மட்டுமே வடிவமைக்கப்பட்டுள்ளது என்பதை நினைவில் கொள்வோம், எனவே இது INS ERT மற்றும் UPDATE போன்ற SQL அறிக்கைகளின் ஒப்புமைகளைக் கொண்டிருக்கவில்லை. உள்ளமைக்கப்பட்ட 1C நிரலாக்க மொழியின் பொருள் மாதிரி மூலம் மட்டுமே தரவை மாற்ற முடியும். 1C வினவல் மொழியில் SQL இல் ஒப்புமைகள் இல்லாத ஆபரேட்டர்கள் உள்ளனர், எடுத்துக்காட்டாக:

  • படிநிலையில்
  • இடம்
  • இண்டெக்ஸ் மூலம்

படிநிலையில்- மாற்றப்பட்ட இணைப்பின் படிநிலையில் சேர்க்கப்பட்டுள்ள படிநிலை கோப்பகத்தின் அனைத்து கூறுகளையும் தேர்ந்தெடுக்க உங்களை அனுமதிக்கிறது. பயன்படுத்தி உதாரணம் கோரிக்கை படிநிலையில்:

தயாரிப்புகள்.இணைப்பு, தயாரிப்புகள்.கோப்பகத்திலிருந்து கட்டுரையைத் தேர்வுசெய்க

இந்த நிலையில், இந்த கோப்பகத்தில் எத்தனை படிநிலை நிலைகள் இருந்தாலும், சிட்ரஸ் பெயரிடல் கோப்பகத்தின் அனைத்து துணை கூறுகளையும் முடிவு வழங்கும்.

மேலும், எடுத்துக்காட்டாக, "பேனா" என்ற பெயரில் ஒரு தயாரிப்பைக் கண்டுபிடிப்பதே பணி. தயாரிப்பு "ஸ்டேஷனரி" படிநிலையில் சேர்க்கப்பட வேண்டும். பொருட்கள்”, அதாவது, நாம் கதவு கைப்பிடியைத் தேட வேண்டியதில்லை. இந்த வழக்கில் பெயரிடலின் அமைப்பு பின்வருமாறு:

அலுவலகம்

|_ நீரூற்று பேனா |_ சிவப்பு பேனா |_ நீல பேனா |_ மை பேனா |_ ஆட்சியாளர்கள்

துணைக்கருவிகள்

|_ கதவு கைப்பிடிகள் |_ எளிய கதவு கைப்பிடி |_ சொகுசு கதவு கைப்பிடி

பின்வரும் கோரிக்கையை நாங்கள் எழுதுகிறோம்:

தயாரிப்புகள்.இணைப்பு, தயாரிப்புகள்.கோப்பகத்திலிருந்து கட்டுரையைத் தேர்வுசெய்க

வடிவமைப்பைப் பயன்படுத்தும் போது படிநிலையில்"அலுவலகம்" அளவுருவிற்கு நீங்கள் ஒரு வெற்று இணைப்பை அனுப்பினால், கோரிக்கையை செயல்படுத்துவது மெதுவாக இருக்கும் என்பதை கணக்கில் எடுத்துக்கொள்வது அவசியம், ஏனெனில் ஒவ்வொரு உறுப்புகளும் ரூட்டிற்கு சொந்தமானதா என்பதைப் பார்க்க தளம் சரிபார்க்கும்.

இடம்- இந்த அறிக்கை முடிவை ஒரு தற்காலிக அட்டவணையில் வைக்கிறது. எடுத்துக்காட்டு கோரிக்கை:

பயனர்கள்.இணைப்பை இணைப்பாகத் தேர்ந்தெடுங்கள், பயனர்கள்.பெற்றோர் பெற்றோராக, பயனர்கள்.பெயர் இடமாகப் பெயரிடப்பட்ட கோப்பகத்தில் இருந்து தேர்ந்தெடுக்கப்பட்ட பயனர்கள். பயனர்கள் பயனர்களாக இருக்கும் இடத்தில் பயனர்கள்.Link = &அடைவு; தேர்ந்தெடுக்கப்பட்ட பயனர்கள்.இணைப்பை இணைப்பாகத் தேர்ந்தெடுக்கவும், தேர்ந்தெடுக்கப்பட்ட பயனர்கள்.பெற்றோர் பெற்றோராக, தேர்ந்தெடுக்கப்பட்ட பயனர்கள்

இந்த SQL வினவல் பல வினவல்களால் செயல்படுத்தப்படும்:

  • ஒரு தற்காலிக அட்டவணையை உருவாக்குதல் (மேடையானது முன்பு உருவாக்கப்பட்ட தற்காலிக அட்டவணைகளை "மீண்டும் பயன்படுத்த" முடியும், எனவே உருவாக்கம் எப்போதும் நிகழாது);
  • தற்காலிக அட்டவணையில் தரவை வைப்பது;
  • இந்த தற்காலிக அட்டவணையில் இருந்து SEL ECT என்ற முக்கிய வினவலை செயல்படுத்துதல்;
  • ஒரு தற்காலிக அட்டவணையை அழித்தல்/சுத்தம் செய்தல்.

ஒரு தற்காலிக அட்டவணையை கட்டுமானத்தின் மூலம் வெளிப்படையாக அழிக்க முடியும் அழிக்கவும், அல்லது மறைமுகமாக - தற்காலிக அட்டவணை மேலாளரை மூடும்போது.

உள்ளமைக்கப்பட்ட நிரலாக்க மொழியின் "வினவல்" பொருளுக்கு "தற்காலிக அட்டவணை மேலாளர்" என்ற சொத்து உள்ளது, இது தற்காலிக அட்டவணைகளுடன் பணிபுரியும் நோக்கம் கொண்டது. எடுத்துக்காட்டு குறியீடு:

MVT = புதிய தற்காலிக அட்டவணை மேலாளர்(); கோரிக்கை = புதிய கோரிக்கை; Query.TemporaryTableManager = MVT;

ஒரு வினவலைச் செயல்படுத்திய பிறகு, MVT மாறி மற்றொரு வினவலில் இரண்டாவது முறையாகப் பயன்படுத்தப்படலாம், இது சந்தேகத்திற்கு இடமின்றி தற்காலிக அட்டவணைகளைப் பயன்படுத்துவதன் மற்றொரு நன்மையாகும். இந்த வழக்கில், "மூடு" முறை அழைக்கப்படும் போது தரவுத்தளத்திலிருந்து தற்காலிக அட்டவணை நீக்கப்படும்...

MVT.Close();

...அல்லது நினைவகத்திலிருந்து ஒரு மாறியை அழிக்கும் போது, ​​அதாவது, மாறி அறிவிக்கப்பட்ட முறையை இயக்கும் போது. தற்காலிக அட்டவணைகள் வட்டு துணை அமைப்பில் சுமையை அதிகரிக்கின்றன, எனவே நீங்கள் பல தற்காலிக துணை அமைப்புகளை (உதாரணமாக ஒரு சுழற்சியில்) அல்லது பெரிய அளவிலான துணை அமைப்புகளை உருவாக்கக்கூடாது.

இண்டெக்ஸ் மூலம்- இந்த ஆபரேட்டர் ஆபரேட்டருடன் இணைந்து பயன்படுத்தப்படுகிறது இடம்.ஒரு தற்காலிக அட்டவணையை உருவாக்கும் போது, ​​இந்த ஆபரேட்டர் உருவாக்கப்படும் அட்டவணையை அட்டவணைப்படுத்தலாம், இது அதனுடன் பணிபுரியும் வேகத்தை கணிசமாக அதிகரிக்கிறது (ஆனால் குறியீட்டு உங்கள் வினவலுடன் பொருந்தினால் மட்டுமே).

இலவச நிபுணர் ஆலோசனை

உங்கள் கோரிக்கைக்கு நன்றி!

1C நிபுணர் 15 நிமிடங்களில் உங்களைத் தொடர்புகொள்வார்.

சில வினவல் மொழி ஆபரேட்டர்களின் அம்சங்கள்

மாற்றத்திற்கு- இந்த ஆபரேட்டர் ஒரு குறிப்பிட்ட வினவல் அட்டவணையை (அல்லது வினவலில் பங்கேற்கும் அனைத்து அட்டவணைகளையும்) பூட்ட வேண்டும். மேசையில் U பூட்டைப் பயன்படுத்துவதன் மூலம் பூட்டுதல் நிறைவேற்றப்படுகிறது. SQL இல் இது குறிப்பு UPDLOCK மூலம் செயல்படுத்தப்படுகிறது. முட்டுக்கட்டைகளைத் தடுக்க இந்த வடிவமைப்பு அவசியம். கட்டுமானத்துடன் கூடிய கோரிக்கையின் எடுத்துக்காட்டு மாற்றத்திற்கு:

பயனர்கள்.இணைப்பை இணைப்பாகத் தேர்ந்தெடுங்கள்

இந்த எடுத்துக்காட்டில், பயனர்கள் அட்டவணையில் U பூட்டு வைக்கப்படும். பூட்டுக்கான அட்டவணையை நீங்கள் குறிப்பிடவில்லை என்றால், வினவலில் பங்கேற்கும் அனைத்து அட்டவணைகளிலும் அது விதிக்கப்படும். இந்த வடிவமைப்பு தானியங்கி பூட்டு மேலாண்மை பயன்முறை இயக்கப்பட்ட உள்ளமைவுகளில் மட்டுமே செயல்படும் என்பதை கவனத்தில் கொள்ள வேண்டும்.



கலவை- கோரிக்கை இணைப்புகளை ஆதரிக்கிறது இடது/வலது, முழு, உள்,இது SQL - இடது/வலது இணைப்பு, வெளிச் சேருதல், உள் இணைப்பு ஆகியவற்றில் இணைகிறது.

இருப்பினும், வினவல் பில்டரைப் பயன்படுத்தும் போது உங்களால் செய்ய முடியாது வலது சேரவும்.கட்டமைப்பாளர் வெறுமனே அட்டவணைகளை மாற்றுவார், ஆனால் ஆபரேட்டர் எப்போதும் இடது கையாக இருப்பார். இந்த காரணத்திற்காக, 1C இல் சரியான இணைப்பின் பயன்பாட்டை நீங்கள் ஒருபோதும் பார்க்க மாட்டீர்கள்.

தொடரியல் ரீதியாக, இணைப்பு இதுபோல் தெரிகிறது:

டைரக்டரியில் இருந்து இணைப்பாக அட்டவணை 1. இணைப்பைத் தேர்ந்தெடுக்கவும். டைரக்டரி 1 என அட்டவணை1 இடதுபுறம் சேரவும் டைரக்டரி. டைரக்டரி2 AS அட்டவணை2 மூலம் அட்டவணை1. பண்புக்கூறுகள் = அட்டவணை2. பண்புக்கூறுகள்

1C வினவல் மொழியில் கார்ட்டீசியன் தயாரிப்பில் (CROSS JOIN) இணைவதற்கான ஆபரேட்டர் இல்லை. இருப்பினும், ஒரு ஆபரேட்டர் இல்லாததால், வினவல் மொழி அத்தகைய இணைப்பை ஆதரிக்கவில்லை என்று அர்த்தமல்ல. தேவைப்பட்டால், நீங்கள் இது போன்ற அட்டவணையில் சேரலாம்:

அட்டவணை 1. கோப்பகத்திலிருந்து இணைப்பாகத் தேர்ந்தெடு

எடுத்துக்காட்டில் இருந்து பார்க்க முடிந்தால், இணைப்பு விசை அமைக்கப்பட்டுள்ளது உண்மை மூலம், அதாவது, ஒரு அட்டவணையின் ஒவ்வொரு வரிசையும் மற்றொரு வரிசைக்கு ஒத்திருக்கும். இரண்டு அட்டவணைகளிலும் வரிசைகள் இருந்தால் சேரும் வகை (LEFT, RIGHT, FULL, INNER) முக்கியமல்ல, ஆனால் ஒரு அட்டவணையில் வரிசைகள் இல்லை என்றால் (அட்டவணை என்று வைத்துக்கொள்வோம்) - முடிவு வேறுபட்டதாக இருக்கும். உதாரணமாக, பயன்படுத்தும் போது உள்இணைப்பு முடிவு காலியாக இருக்கும். பயன்படுத்தி இடது வலதுசேர்வதன் முடிவு நாம் எந்த அட்டவணையில் இணைகிறோம் என்பதைப் பொறுத்து தரவு இருக்கும் அல்லது இருக்காது. பயன்படுத்தி முழுதரவு எப்பொழுதும் இணைக்கப்படும் (இயற்கையாகவே, ஒரு அட்டவணையில் இருந்து மட்டுமே, மற்றொன்று காலியாக இருப்பதால், குறிப்பிட்ட பயன்பாட்டுப் பணியைப் பொறுத்தது);

வெவ்வேறு இணைப்பு வகைகள் எவ்வாறு செயல்படுகின்றன என்பதற்கான சிறிய காட்சி குறிப்பு:



விரும்பு.ஒத்த SQL ஆபரேட்டர் போலல்லாமல் - LIKE, இதற்கான டெம்ப்ளேட் விரும்புசில சிறப்பு எழுத்துக்களை மட்டும் பயன்படுத்தி குறிப்பிடலாம்:

  • % (சதவீதம்): எத்தனையோ தன்னிச்சையான எழுத்துக்களைக் கொண்ட ஒரு வரிசை;
  • _ (அண்டர்ஸ்கோர்): ஒரு தன்னிச்சையான எழுத்து;
  • / - அடுத்த எழுத்து வழக்கமான பாத்திரமாக விளங்க வேண்டும்.

மென்பொருளின் முடிவுகள் SQL அனலாக் என்பது ROLLUP ஆபரேட்டர். ஆபரேட்டர் பயன்பாட்டு உதாரணம் முடிவுகள்:

தயாரிப்புகளை தேர்வு செய்யவும்.விலையாக விலை, தயாரிப்புகள்.தயாரிப்பிலிருந்து தயாரிப்பு. தயாரிப்பு என பெயரிடல் தயாரிப்புகளின் முடிவுகள் சராசரியாக (விலை) தயாரிப்பு மூலம்

முடிவு இப்படி இருக்கும்:

படுக்கை

9833,333

இரும்பு

பேனா

அதாவது, குழுவாக்கம் செய்யப்படும் புலத்தின் மதிப்பு மற்றும் ஒருங்கிணைக்கும் செயல்பாட்டின் மதிப்பு ஆகியவற்றைக் கொண்ட முடிவில் கூடுதல் வரி சேர்க்கப்படுகிறது.

தொகுதி கோரிக்கைகளுடன் பணிபுரிதல்

1C கோரிக்கைகளின் தொகுப்புகளுடன் வேலை செய்ய உங்களை அனுமதிக்கிறது. ஒரு தொகுதி கோரிக்கையில், கோரிக்கை உரைகள் அரைப்புள்ளிகளால் (;) பிரிக்கப்படுகின்றன. 1C தொகுதி கோரிக்கை தொடர்ச்சியாக செயல்படுத்தப்படுகிறது. எடுத்துக்காட்டு தொகுதி கோரிக்கை உரை:

பயனர்கள்.இணைப்பை இணைப்பாகத் தேர்ந்தெடுக்கவும், பயனர்கள்.பெற்றோர் பெற்றோராக, பயனர்கள்.பெயர் டைரக்டரியில் இருந்து பெயர். பயனர்களாக பயனர்கள்;
பணி அட்டவணையை தேர்வு செய்யவும்.பயனர் என பயனர், பணி அட்டவணை. தேதி, வேலை அட்டவணை

தொகுப்பில் சேர்க்கப்பட்டுள்ள அனைத்து வினவல்களின் முடிவையும் பெற, "ரன்" என்பதற்குப் பதிலாக, கோரிக்கை பொருளின் "எக்ஸிகியூட் பேக்கேஜ்" முறையைப் பயன்படுத்த வேண்டும். இந்த முறை அனைத்து கோரிக்கைகளையும் வரிசையாக செயல்படுத்துகிறது. வினவல் முடிவு என்பது தொகுப்பில் உள்ள ஒவ்வொரு வினவலுக்கான முடிவுகளின் வரிசையாகும், மேலும் தொகுப்பின் உரையில் உள்ள வினவல்களின் வரிசையைப் போலவே வரிசையில் வைக்கப்படும் வரிசையும் இருக்கும்.

வினவல் மொழியைக் கருத்தில் கொள்ளும்போது, ​​மெய்நிகர் அட்டவணைகள் போன்ற ஒரு அம்சத்தைக் குறிப்பிடுவது மதிப்பு. மெய்நிகர் அட்டவணைகள் தரவுத்தளத்தில் இல்லை மெய்நிகர் அட்டவணைகளைப் பயன்படுத்தி 1C வினவலின் எடுத்துக்காட்டு:

RegisterLiabilitiesTurnovers தேர்ந்தெடுக்கவும். RegisterAccumulations இருந்து பொறுப்பு என பொறுப்பு

DBMSக்கான அத்தகைய வினவல் இப்படி இருக்கும்:

SEL ECT T1.Fld25931RRef FR OM (T2._Fld25931RRef AS Fld25931RRef, CAST(SUM(T2._Fld25936) AS NUMERIC(38, 8)) AS Fld259U36Turnover ERIC(38, 8) ) AS Fld25937Turnover_ FR OM dbo._AccumRgTn25938 T2 WH ERE ((T2._Fld949 = @P1)) மற்றும் (T2._Fld25936 @P2 OR T2._Fld25937 @CAUPRY) எம்(T2._Fld2 ) 5936 ) AS NUMERIC(38, 8))) 0.0 அல்லது (CAST(SUM(T2._Fld25937) AS NUMERIC(38, 8))) 0.0) T1>>>>

துணை வினவல், குரூப்பிங் இருப்பதால், இது SQL போல் இல்லை என்பதைக் காணலாம். மெய்நிகர் அட்டவணைகள், பெரிய அளவில், "தொடக்கச் சர்க்கரை" ஆகும், அதாவது, பொதுவாக, வினவல்களை உருவாக்குவதற்கான வசதிக்காக அவை உருவாக்கப்படுகின்றன, இதனால் வினவல்கள் மிகவும் கச்சிதமாகவும் படிக்கக்கூடியதாகவும் இருக்கும்.

பதிவேட்டில் மட்டுமே மெய்நிகர் அட்டவணைகள் உள்ளன, ஆனால் ஒரு பதிவேட்டில் எந்த மெய்நிகர் அட்டவணைகள் உள்ளன என்பதை வினவல் வடிவமைப்பாளரில் காணலாம்.



மெய்நிகர் அட்டவணைகளைப் பயன்படுத்தும் போது, ​​நீங்கள் எப்போதும் ஒரு தேர்வு நிலையை வழங்க வேண்டும். இல்லையெனில், செயல்திறன் சிக்கல்கள் ஏற்படலாம்.



கோரிக்கை உடலில் இது போல் தெரிகிறது:

திரட்சிப் பதிவு

வினவல்களை எழுதும் வசதிக்காக, அதாவது, வினவல் உரைகளை உருவாக்குதல், 1C இல் சூழல் மெனு (வலது சுட்டி பொத்தான்) மூலம் அழைக்கக்கூடிய ஒரு கட்டமைப்பாளர் உள்ளது:



வினவல் வடிவமைப்பாளரில், ஆதரிக்கப்படும் வினவல் மொழி செயல்பாடுகள் மற்றும் ஆபரேட்டர்களின் முழுமையான பட்டியலைக் காணலாம்.


Query Builder என்பது எந்தவொரு சிக்கலான கேள்விகளையும் உருவாக்குவதற்கான மிகவும் நெகிழ்வான காட்சி கருவியாகும். இது கன்ஃபிகரேட்டர் பயன்முறையில் மட்டுமே கிடைக்கும். எண்டர்பிரைஸ் பயன்முறையில் "வினவல் கன்சோல்" என்று அழைக்கப்படுகிறது - இது ITS வட்டில் வழங்கப்படும் வெளிப்புற செயலாக்கமாகும். நிர்வகிக்கப்பட்ட பயன்பாட்டிற்கு, வினவல் கன்சோலை its.1c.ru இலிருந்து பதிவிறக்கம் செய்யலாம்.

வினவல் வடிவமைப்பாளரில் பணிபுரியும் விளக்கம் இந்த கட்டுரையின் எல்லைக்கு அப்பாற்பட்டது, எனவே இது விரிவாக விவாதிக்கப்படாது.

துணை வினவல் செயல்திறனுக்கான காரணங்கள்

மெதுவான வினவல் செயலாக்கத்திற்கு வழிவகுக்கும் முக்கிய காரணங்களின் பட்டியல் கீழே உள்ளது (ஆனால் அனைத்துமே இல்லை).

  • துணை வினவல்களுடன் இணைப்பைப் பயன்படுத்துதல்

துணை வினவல்களுடன் இணைக்க பரிந்துரைக்கப்படவில்லை, அவை தற்காலிக அட்டவணைகளால் மாற்றப்பட வேண்டும். துணை வினவல்களை இணைப்பது குறிப்பிடத்தக்க செயல்திறன் இழப்புகளுக்கு வழிவகுக்கும், மேலும் வெவ்வேறு டிபிஎம்எஸ்களில் வினவல் செயலாக்கம் கணிசமாக வேகத்தில் மாறுபடும். அத்தகைய வினவல்களின் செயல்பாட்டின் வேகம் DBMS இல் உள்ள புள்ளிவிவரங்களுக்கும் உணர்திறன் கொண்டது. இந்த நடத்தைக்கான காரணம் என்னவென்றால், DBMS ஆப்டிமைசரால் உகந்த வினவல் செயலாக்கத் திட்டத்தை எப்போதும் சரியாகத் தீர்மானிக்க முடியாது, ஏனெனில் அதன் செயல்பாட்டிற்குப் பிறகு துணை வினவல் எத்தனை வரிசைகள் திரும்பும் என்பது பற்றி ஆப்டிமைசருக்கு எதுவும் தெரியாது.

  • வினவல் இணைப்பில் மெய்நிகர் அட்டவணைகளைப் பயன்படுத்துதல்

DBMS மட்டத்தில் உள்ள மெய்நிகர் அட்டவணைகள் துணை வினவல்களாக செயல்படுத்தப்படுகின்றன, எனவே காரணங்கள் முதல் பத்தியில் உள்ளதைப் போலவே இருக்கும்.

  • ஏற்கனவே உள்ள குறியீடுகளுக்குப் பொருந்தாத வினவலில் நிபந்தனைகளைப் பயன்படுத்துதல்

கோரிக்கை நிபந்தனைகளில் இருந்தால் (ஆபரேட்டரில் எங்கேஅல்லது மெய்நிகர் அட்டவணை நிபந்தனைகள்) குறியீட்டில் சேர்க்கப்படாத புலங்களைப் பயன்படுத்துகிறது, இந்த வினவல் SQL கன்ஸ்ட்ரக்ட் டேபிள் ஸ்கேன் அல்லது இன்டெக்ஸ் ஸ்கேன் (முழு அல்லது பகுதியாக) பயன்படுத்தி செயல்படுத்தப்படும். இது வினவல் செயல்படுத்தும் நேரத்தை மட்டும் பாதிக்காது, கூடுதல் வரிசைகளில் அதிகப்படியான S பூட்டு வைக்கப்படும், இது பூட்டு விரிவாக்கத்திற்கு வழிவகுக்கும், அதாவது முழு அட்டவணையும் பூட்டப்படும்.

  • வினவல் நிலைகளில் OR ஐப் பயன்படுத்துதல்

தருக்க ஆபரேட்டரைப் பயன்படுத்துதல் அல்லதுவடிவமைப்பில் எங்கேடேபிள் ஸ்கேன் செய்யப்படலாம். DBMS ஆனது குறியீட்டை சரியாகப் பயன்படுத்த முடியாததால் இது நிகழ்கிறது. அதற்கு பதிலாக அல்லதுநீங்கள் வடிவமைப்பைப் பயன்படுத்தலாம் எல்லாவற்றையும் இணைக்கவும்.

  • கலப்பு வகையின் புலங்களுக்கான புள்ளி மூலம் தரவைப் பெறுதல்

ஒரு புள்ளியின் மூலம் மதிப்புகளைப் பெற பரிந்துரைக்கப்படவில்லை (கட்டுமானத்தில் எங்கு தேர்வு செய்யவும்), ஏனெனில் பொருள் பண்புக்கூறு ஒரு சிக்கலான வகையாக மாறினால், இந்த சிக்கலான வகையில் சேர்க்கப்பட்டுள்ள ஒவ்வொரு அட்டவணையிலும் சேருதல் ஏற்படும். இதன் விளைவாக, DBMS வினவல் மிகவும் சிக்கலானதாக இருக்கும், இது உகப்பாக்கி சரியான வினவல் செயலாக்கத் திட்டத்தைத் தேர்ந்தெடுப்பதைத் தடுக்கலாம்.

ஒரு குறிப்பிட்ட நிபந்தனையின்படி தரவுத்தளத்திலிருந்து. இதைச் செய்ய, 1C 8.3 இல் நீங்கள் உள்ளமை வினவல்களைப் பயன்படுத்த வேண்டும்.

ஆனால் பெரும்பாலான சந்தர்ப்பங்களில், 1C இல் உள்ள உள்ளமை வினவல்கள் அவற்றின் முடிவுகளை மற்ற அட்டவணைகளுடன் இணைக்காமல் பயனற்றவை என்பதை நினைவில் கொள்ள வேண்டும். ஏறக்குறைய எந்தவொரு சந்தர்ப்பத்திலும், அத்தகைய இணைப்பு கோரிக்கையை ஒட்டுமொத்தமாக நிறைவேற்றுவதை வெகுவாகக் குறைக்கும்.

வினவல் மொழியில் உள்ளமைக்கப்பட்ட வினவலின் எடுத்துக்காட்டு

என்பதற்கான உள்ளமைக்கப்பட்ட வினவலுக்கு ஒரு உதாரணம் தருகிறேன். ஒரு குறிப்பிட்ட தேதியில் தனிப்பட்ட வாடிக்கையாளர்களுக்கு ஒரு குறிப்பிட்ட இருப்புத் தொகையை மாதிரி செய்ய வேண்டும் என்று வைத்துக்கொள்வோம்:

தேர்வு
வாடிக்கையாளருக்கு பேமெண்ட் பாக்கிகளை வழங்காதது,
அனுப்பப்படாத கொடுப்பனவுகள் இருப்புக்கள். சிறந்த தொகை
இருந்து

1C இல் 267 வீடியோ பாடங்களை இலவசமாகப் பெறுங்கள்:

லெஃப்ட் ஜாயின் குவிப்புப் பதிவு. கொடுப்பனவுகளை வழங்காமை AS கொடுப்பனவுகளை வழங்காதது
Software AttachmentRequest.LinkToRequestCustomers = வழங்கப்படாத கொடுப்பனவுகள்.வாடிக்கையாளர்

DBMS அத்தகைய வினவலைச் செயல்படுத்தும் போது, ​​வினவல் செயலாக்கத் திட்டத்தைத் தீர்மானிப்பது கடினம் என்பதால், ஆப்டிமைசரின் தவறான செயல்கள் சாத்தியமாகும். ஒரு DBMS இரண்டு அட்டவணைகளை இணைக்கும் போது, ​​இந்த அட்டவணையில் உள்ள பதிவுகளின் எண்ணிக்கையைக் கணக்கிடுவதன் அடிப்படையில் உகப்பாக்கி ஒரு அல்காரிதத்தை உருவாக்குகிறது.

இருப்பினும், ஒரு துணை வினவல் பயன்படுத்தப்படும்போது, ​​துணை வினவலில் இருந்து திரும்பிய பதிவுகளின் எண்ணிக்கையைக் கணக்கிடுவது மிகவும் கடினம்.

எது சிறந்தது?

// தற்காலிக அட்டவணை
தேர்வு
வாடிக்கையாளர்கள். எப்படி வாடிக்கையாளர்கள் இணைப்பு
வாடிக்கையாளர்கள் தாவலை வைக்கவும்
இருந்து
அடைவு. வாடிக்கையாளர்கள் AS வாடிக்கையாளர்கள்
வாடிக்கையாளர்கள். இணைப்பு பி (&வாடிக்கையாளர்கள்)
;

//முக்கிய கோரிக்கை
தேர்வு
tabClients.Link,
செலுத்தப்படாத நிலுவைகள். சிறந்த தொகை,
இருந்து
tab வாடிக்கையாளர்கள் எப்படி டேப் வாடிக்கையாளர்கள்
லெஃப்ட் கனெக்ஷன் ரெஜிஸ்டர் திரட்சிகள்.
,
வாடிக்கையாளர் பி
(தேர்வு
tab வாடிக்கையாளர்கள்.வாடிக்கையாளர்கள்
இருந்து
tab வாடிக்கையாளர்கள்)) பேமெண்ட் பேலன்ஸ்களை எவ்வாறு செலுத்துவதில் தோல்வி
மென்பொருள் தாவல் வாடிக்கையாளர்கள். வாடிக்கையாளர்கள் = செலுத்தப்படாத கொடுப்பனவுகள். வாடிக்கையாளர்கள்

உள்ளமை வினவல்கள் பற்றிய வீடியோ டுடோரியலையும் பார்க்கவும்:

இப்போது உகப்பாக்கி தற்காலிக அட்டவணையில் எத்தனை பதிவுகள் உள்ளன என்பதை முன்கூட்டியே அறிந்திருக்கிறது, மேலும் அட்டவணை சேரும் வழிமுறையை எளிதாக மேம்படுத்துகிறது.

நீங்கள் 1C நிரலாக்கத்தைக் கற்கத் தொடங்கினால், எங்கள் இலவச பாடத்திட்டத்தை நாங்கள் பரிந்துரைக்கிறோம் (மறக்க வேண்டாம்

1C 8.3 மற்றும் 8.2 இல் உள்ள வினவல் வடிவமைப்பாளர் ஒரு சக்திவாய்ந்த மேம்பாட்டு கருவியாகும். சிறப்பு காட்சி சூழலைப் பயன்படுத்தி கோரிக்கை உரையை உருவாக்க இது உங்களை அனுமதிக்கிறது. எனவே, 1C கோரிக்கையை உருவாக்க, உள்ளமைக்கப்பட்ட வினவல் மொழியை அறிந்திருக்க வேண்டிய அவசியமில்லை, வடிவமைப்பாளரின் எளிய மற்றும் உள்ளுணர்வு இடைமுகத்தை வழிநடத்த இது போதுமானது.

வினவல் பில்டர் என்பது தாவல்களின் தொகுப்பாகும், அவை ஒவ்வொன்றும் வினவலின் அதன் சொந்த பகுதிக்கு பொறுப்பாகும். எனவே தாவலை நிரப்பவும் அட்டவணைகள் மற்றும் புலங்கள்ஒரு குறிப்பிட்ட சிக்கலைத் தீர்க்க தேவையான இந்த அட்டவணைகளின் தரவு மற்றும் புலங்களை 1C வினவல் பெறும் அட்டவணைகளை நாங்கள் தேர்ந்தெடுக்கிறோம். கொத்துக்குள் நிரப்புதல் நிபந்தனைகள்தேர்ந்தெடுக்கப்பட்ட அட்டவணைகளில் இருந்து நமக்குத் தேவையான தரவை மட்டும் தேர்ந்தெடுக்க, நாங்கள் நிபந்தனைகளை விதிக்கிறோம்.

அதிகாரப்பூர்வ 1C 8 இணையதளத்தில் வினவல் வடிவமைப்பாளரின் விளக்கம்: v8.1c.ru

அட்டவணைகள் மற்றும் புலங்கள்; ; ; ; ; ; உள்ளமை வினவல்கள் (வளர்ச்சியில்).

நிரல் குறியீட்டில் 1s 8 வினவல் வடிவமைப்பாளரை அழைக்க, நீங்கள் செய்ய வேண்டியது:

  • புதிய கோரிக்கையை உருவாக்கவும்
கோரிக்கை = புதிய கோரிக்கை;
  • வெற்று கோரிக்கை உரை வரியை அமைக்கவும்
கோரிக்கை.உரை = "";
  • மேற்கோள்களுக்கு இடையில் மவுஸ் கர்சரை வைத்து வலது சுட்டி பொத்தானை அழுத்தவும். திறக்கும் சூழல் மெனுவில், உருப்படியைத் தேர்ந்தெடுக்கவும் வினவல் கட்டமைப்பாளர்மற்றும் பதில் ஆம்புதிய கோரிக்கையை உருவாக்குவது பற்றிய கேள்விக்கு. கோரிக்கை உரை ஏற்கனவே எழுதப்பட்டிருந்தால், அதன் உள்ளே எங்கும் கிளிக் செய்து கட்டமைப்பாளரை அழைக்க வேண்டும் ;

சிக்கலை அதிகரிப்பதற்கான சிறிய எடுத்துக்காட்டுகளைப் பயன்படுத்தி வினவல் பில்டரின் அனைத்து முக்கிய தாவல்களையும் பார்க்கலாம். இந்த அணுகுமுறை ஒரு புதிய 1C ப்ரோக்ராமர் கட்டமைப்பாளரையும் அதன் அனைத்து திறன்களையும் மிகவும் திறம்பட ஆய்வு செய்ய அனுமதிக்கும். எடுத்துக்காட்டுகளுக்கு, கட்டமைப்பைப் பயன்படுத்துவோம் கணக்கியல் 3.0.

பாடம் 1. வினவல் பில்டர் என்பது எளிமையான பயன்பாட்டு வழக்கு.

பணி: பெயரிடல் கோப்பகத்திற்கு ஒரு கோரிக்கையை எழுதவும், கோப்பகத்தின் முழு பெயரிடலையும் தேர்ந்தெடுக்கவும்.

புதிய தாவல்கள்: அட்டவணைகள் மற்றும் புலங்கள்.

புதிய வழிமுறைகள்: "கோரிக்கை" பொத்தானைப் பயன்படுத்தி கோரிக்கை உரையைப் பார்க்கவும் திருத்தவும்.

கோரிக்கையை உருவாக்கத் தொடங்க, புதிய கோரிக்கையை உருவாக்கி, கட்டமைப்பாளரை அழைப்போம் (மேலே சில பத்திகள் எழுதப்பட்டுள்ளது). அதன் பிறகு, வடிவமைப்பாளர் சாளரம் தாவலில் திறக்கும் அட்டவணைகள் மற்றும் புலங்கள்.

பாடம் எண் 1 இன் தத்துவார்த்த பகுதி

தாவல் அட்டவணைகள் மற்றும் புலங்கள்மூன்று பிரிவுகளைக் கொண்டுள்ளது:

தரவுத்தளம். வினவலை உருவாக்கப் பயன்படுத்தக்கூடிய அனைத்து தரவுத்தள அட்டவணைகளையும் இந்தப் பிரிவு வழங்குகிறது;

அட்டவணைகள். இந்த பிரிவில், இந்த வினவலுக்கு தேவையான அட்டவணைகள் தேர்ந்தெடுக்கப்பட்டுள்ளன. பின்னர் அவற்றை பிரிவிலிருந்து நகர்த்தவும் தரவுத்தளம்வேண்டும்:

  • அல்லது மேஜையில் இருமுறை கிளிக் செய்யவும்;
  • அல்லது ">" அல்லது ">>" பொத்தான்களைப் பயன்படுத்தவும்.

மேலே உள்ள பகுதி அட்டவணைகள்பல பொத்தான்கள் உள்ளன. அவற்றில் பெரும்பாலானவை பின்வரும் பாடங்களில் இன்னும் விரிவாக விவாதிக்கப்படும். இப்போதைக்கு சுருக்கமான விளக்கங்களை மட்டும் தருகிறேன்.

  • ஒரு துணை வினவலை உருவாக்கவும்(சிவப்பு கோடு). புதிய துணை வினவலை உருவாக்க வடிவமைக்கப்பட்டுள்ளது;
  • தற்காலிக அட்டவணை விளக்கத்தை உருவாக்கவும்(மஞ்சள் கோடு). இந்த வினவலுக்கு வெளியே அமைந்துள்ள ஒரு தற்காலிக அட்டவணையின் பெயரைக் குறிப்பிட உங்களை அனுமதிக்கிறது;
  • தற்போதைய உறுப்பை மாற்றவும்(பச்சை கோடு). தேர்ந்தெடுக்கப்பட்ட துணை வினவல், தற்காலிக அட்டவணை அல்லது தற்காலிக அட்டவணை விளக்கத்திற்கு செல்ல உங்களை அனுமதிக்கிறது;
  • தற்போதைய உருப்படியை அகற்று(நீல கோடு). தேர்ந்தெடுக்கப்பட்ட அட்டவணையில் இருந்து தேர்ந்தெடுக்கப்பட்ட அட்டவணையை நீக்குகிறது;
  • அட்டவணையை மாற்றவும்(நீல கோடு). தேர்ந்தெடுக்கப்பட்ட அட்டவணையை மாற்றுவதற்கான உரையாடலைத் திறக்கிறது. தவறான பதிவு மெய்நிகர் அட்டவணையை நீங்கள் தேர்ந்தெடுத்திருந்தால் பயனுள்ளதாக இருக்கும், ஏனெனில் பட்டியலில் தற்போது தேர்ந்தெடுக்கப்பட்ட அட்டவணையில் நிலைப்படுத்தல் ஏற்படுகிறது.
  • மெய்நிகர் அட்டவணை விருப்பங்கள்(ஊதா கோடு). மெய்நிகர் பதிவு அட்டவணை அளவுருக்களைத் திறக்கிறது.

வயல்வெளிகள். இந்தப் பிரிவு முந்தைய பிரிவில் இருந்து அட்டவணைப் புலங்களைத் தேர்ந்தெடுக்கிறது. இந்த புலங்கள் அட்டவணையின் நெடுவரிசைகள் அல்லது வினவலின் விளைவாகப் பெறப்பட்ட தேர்வாக இருக்கும். தேர்ந்தெடுக்கப்பட்ட அட்டவணையில் இருந்து ஒரு குறிப்பிட்ட வழக்கில் தேவையான தகவல்களை மட்டுமே பெறுவதற்கு அவை முதன்மையாக தேவைப்படுகின்றன. பிரிவில் இருந்து அவர்களை நகர்த்துவதற்காக தேவையான அட்டவணைகள்:

  • அல்லது புலத்தில் இருமுறை கிளிக் செய்யவும்;
  • அல்லது ">" அல்லது ">>" பொத்தான்களைப் பயன்படுத்தவும்;
  • தேர்ந்தெடுக்கப்பட்ட அட்டவணைகள் மற்றும் வினவல் மொழி செயல்பாடுகளின் புலங்களில் இருந்து தன்னிச்சையான வெளிப்பாட்டைப் பயன்படுத்தி, நீங்களே ஒரு புதிய புலத்தைச் சேர்க்கலாம்.

மேலே உள்ள பகுதி வயல்வெளிகள்பல பொத்தான்கள் உள்ளன. தன்னிச்சையான வெளிப்பாடுகளைப் பயன்படுத்தி புலங்களை உருவாக்குவது பின்வரும் பாடங்களில் இன்னும் விரிவாக விவாதிக்கப்படும். இப்போதைக்கு சுருக்கமான விளக்கங்களை மட்டும் தருகிறேன்.

  • கூட்டு(பச்சை கோடு). இலவச வெளிப்பாடு எடிட்டரைப் பயன்படுத்தி புதிய புலத்தைச் சேர்க்க வடிவமைக்கப்பட்டுள்ளது;
  • தற்போதைய உறுப்பை மாற்றவும்(சிவப்பு கோடு). எடிட்டரைப் பயன்படுத்தி தேர்ந்தெடுக்கப்பட்ட புலத்தை மாற்ற உங்களை அனுமதிக்கிறது;
  • மின்னோட்டத்தை நீக்கு(நீல கோடு). தேர்ந்தெடுக்கப்பட்ட புலத்தை பட்டியலில் இருந்து நீக்குகிறது.

பாடம் எண் 1 இன் நடைமுறை பகுதி

இந்த பாடத்தில் வழங்கப்பட்ட பணியை முடிக்க தேவையான கோட்பாட்டை நாங்கள் கையாண்டுள்ளோம். இது எப்படி ஒலிக்கிறது என்பதை நான் உங்களுக்கு நினைவூட்டுகிறேன்: பெயரிடல் கோப்பகத்திற்கு ஒரு கோரிக்கையை எழுதுங்கள், கோப்பகத்தின் முழு பெயரிடலையும் தேர்ந்தெடுக்கவும்.

உருப்படிகளுக்கான கோரிக்கையை உருவாக்கத் தொடங்குவோம்:

  • பாடத்தின் தொடக்கத்தில் குறிப்பிடப்பட்டுள்ள முறையைப் பயன்படுத்தி புதிய கோரிக்கையை உருவாக்கி, கட்டமைப்பாளரைத் திறப்போம்;
  • அத்தியாயத்தில் தரவுத்தளம், ஒரு நூலைத் திறப்போம் அடைவுகள்அங்கே ஒரு வழிகாட்டியைக் கண்டுபிடி பெயரிடல்;
  • அதைத் தேர்ந்தெடுத்து ">" பொத்தானைப் பயன்படுத்தி அதை பகுதிக்கு நகர்த்தவும் அட்டவணைகள்;
  • அத்தியாயத்தில் அட்டவணைகள்"+" ஐகானைப் பயன்படுத்தி பெயரிடல் கோப்பகத்தைத் திறக்கவும்;
  • திறக்கும் புலங்களின் பட்டியலில், புலத்தைக் கண்டறியவும் இணைப்புமற்றும் அதை பகுதிக்கு நகர்த்தவும் வயல்வெளிகள்">" பொத்தானைப் பயன்படுத்தி
  • உருப்படி கோரிக்கை தயாராக உள்ளது, வடிவமைப்பாளர் சாளரத்தின் கீழே உள்ள "சரி" பொத்தானைக் கிளிக் செய்யவும்.

அது என்னவென்று பார்ப்போம் உள்ளமை வினவல்கள்மற்றும் ஏன் அவை தேவைப்படுகின்றன.
ஒரு அட்டவணையில் பல தொடர்ச்சியான செயல்கள் செய்யப்பட வேண்டிய சூழ்நிலை பெரும்பாலும் உள்ளது. உங்களுக்கு முதலில் தேவைப்படும் போது, ​​பின்னர் ஒரு குழு அட்டவணையில் சில நிபந்தனைகளை விதிக்கவும் அல்லது அதை மற்றொரு அட்டவணையுடன் இணைக்கவும். அத்தகைய சந்தர்ப்பங்களில், அவர்கள் மீட்புக்கு வருகிறார்கள் உள்ளமை வினவல்கள்.

உள்ளமைக்கப்பட்ட வினவல் நடைமுறையில் வழக்கமான வினவலிலிருந்து வேறுபட்டதல்ல. இது அடைப்புக்குறிக்குள் இணைக்கப்பட்டுள்ளது மற்றும் 1C வினவல் மொழியின் அனைத்து முறைகளும் செயல்பாடுகளும் இதில் கிடைக்கின்றன. மேலும் பெற்றோர் வினவலுக்கு, துணை வினவலின் அனைத்து புலங்களும் உள்ளன.
மிகவும் பழமையான உள்ளமை வினவலின் அமைப்பு இதுபோல் தெரிகிறது:

NestedQuery ஆக இருந்து (தேர்ந்தெடு) தேர்ந்தெடுக்கவும்

நிச்சயமாக, இந்த வடிவத்தில், உள்ளமை வினவலைப் பயன்படுத்துவது அர்த்தமல்ல, ஏனென்றால் கூடுகளைப் பயன்படுத்தாமல் உடனடியாகத் தேவையான புலங்களைத் தேர்ந்தெடுக்கலாம். புரிந்துகொள்வதற்காக இங்கே எல்லாம் மிகவும் எளிமைப்படுத்தப்பட்டுள்ளது.

இப்போது ஒரு உதாரணத்தைப் பயன்படுத்தி மேலே உள்ள அனைத்தையும் பார்ப்போம்.
பணியாளர்கள் பிரிவுகளின் அட்டவணையை நாங்கள் வைத்திருப்போம்:

மேலும் இந்த அட்டவணையில் இருந்து ஒன்றுக்கு மேற்பட்ட ஊழியர்கள் பணிபுரியும் அனைத்து துறைகளையும் தேர்ந்தெடுக்க விரும்புகிறோம்.

பணியாளர்கள் பிரிவுகளை தேர்வு செய்யவும். பிரிவு AS பிரிவு, NUMBER (பணியாளர்கள் பிரிவுகள். பணியாளர்கள்) AS பணியாளர்களின் எண்ணிக்கை

இந்த வினவலை இயக்கினால், அதன் விளைவாக பின்வரும் அட்டவணையைப் பெறுவோம்

இரண்டாவது படி, இந்த அட்டவணையில் உள்ள ஊழியர்களின் எண்ணிக்கைக்கு வரம்பு விதிக்க வேண்டும். இதைச் செய்ய, மேலே உள்ள வினவலை உள்ளமைத்து, தொடர்புடைய நிலையை உயர் வினவலில் எழுதுவோம்

NestedQuery.Unit ஐ யூனிட்டாக தேர்ந்தெடுக்கவும் பணியாளர்கள் > 1

எனவே, இறுதி வினவலின் முடிவு பின்வருமாறு இருக்கும்

சரியாகச் சொல்வதானால், செயல்பாட்டைப் பயன்படுத்தி அதே முடிவை அடைய முடியும் என்பது கவனிக்கத்தக்கது கொண்டவை 1C வினவல் மொழி, அத்துடன் தற்காலிக அட்டவணைகளைப் பயன்படுத்துதல்.
நடைமுறையில், அட்டவணைகள் மற்றும் அட்டவணைகள் இரண்டையும் பயன்படுத்தக்கூடிய மிகவும் சிக்கலான உள்ளமை வினவல்களை நீங்கள் நிச்சயமாக சந்திப்பீர்கள். கூடு கட்டுவதில் பல நிலைகளும் இருக்கலாம்.

எனது பங்களிப்பை வழங்கவும், மேலே உள்ள கட்டுரைகளில் விவாதிக்கப்படாத மொழியின் அம்சங்களை விவரிக்கவும் முடிவு செய்தேன். கட்டுரை ஆரம்ப டெவலப்பர்களை இலக்காகக் கொண்டது.

1. "IZ" வடிவமைப்பு.

தரவுத்தளத்திலிருந்து தரவைப் பெறுவதற்கு, "FROM" கட்டமைப்பைப் பயன்படுத்துவது அவசியமில்லை.
உதாரணம்: வங்கிகள் பற்றிய அனைத்து தகவல்களையும் வங்கிகள் கோப்பகத்திலிருந்து தேர்ந்தெடுக்க வேண்டும்.
கோரிக்கை:

கோப்பகத்தைத் தேர்ந்தெடுக்கவும்.வங்கிகள்.*

வங்கிகள் கோப்பகத்தில் இருந்து அனைத்து புலங்களையும் தேர்ந்தெடுக்கிறது. மற்றும் கோரிக்கையைப் போன்றது:

வங்கிகளைத் தேர்ந்தெடுக்கவும்.* கோப்பகத்திலிருந்து. வங்கிகள் வங்கிகளாக

2. குறிப்பு புலத்தின் மூலம் தரவை வரிசைப்படுத்துதல்

வினவல் தரவை பழமையான வகைகளின்படி ஒழுங்கமைக்க வேண்டியிருக்கும் போது: "ஸ்ட்ரிங்", "எண்", "தேதி", முதலியன, நீங்கள் ஒரு குறிப்பு புலத்தின் மூலம் தரவை ஆர்டர் செய்ய வேண்டுமானால், "ஆர்டர் பை" கட்டமைப்பைப் பயன்படுத்தி எல்லாம் தீர்க்கப்படுமா? குறிப்பு புலம் என்பது ஒரு இணைப்பு, ஒரு தனிப்பட்ட அடையாளங்காட்டி, அதாவது. தோராயமாகச் சொன்னால், சில தன்னிச்சையான எழுத்துக்கள் மற்றும் சாதாரண வரிசைப்படுத்துதல் ஆகியவை முற்றிலும் எதிர்பார்க்கப்படாத முடிவை உருவாக்கக்கூடும். குறிப்பு புலங்களை ஆர்டர் செய்ய, "ஆட்டோ ஆர்டர்" கட்டுமானம் பயன்படுத்தப்படுகிறது. இதைச் செய்ய, நீங்கள் முதலில் "ஆர்டர் பை" கட்டுமானத்தைப் பயன்படுத்தி, பின்னர் "ஆட்டோ ஆர்டர்" கட்டுமானத்தைப் பயன்படுத்தி குறிப்பு வகை மூலம் தரவை நேரடியாக ஆர்டர் செய்ய வேண்டும்.

இந்த வழக்கில், ஆவணங்களுக்கான வரிசைப்படுத்தல் "தேதி->எண்" வரிசையில் நிகழும், குறிப்பு புத்தகங்களுக்கு "முதன்மை பார்வை". குறிப்பு புலங்கள் மூலம் ஆர்டர் செய்யப்படாவிட்டால், "ஆட்டோ ஆர்டர்" கட்டுமானத்தைப் பயன்படுத்துவது பரிந்துரைக்கப்படவில்லை.

சில சமயங்களில், "AUTO Order" கன்ஸ்ட்ரக்ட் தேர்வு செயல்முறையை மெதுவாக்கும். இதேபோல், ஆவணங்களுக்கு தானாக ஆர்டர் செய்யாமல் மீண்டும் எழுதலாம்:

3.குறிப்பு வகையின் உரைப் பிரதிநிதித்துவத்தைப் பெறுதல். "பிரசன்டேஷன்" வடிவமைப்பு.

நீங்கள் ஒரு குறிப்பு வகையின் புலத்தைக் காட்ட வேண்டியிருக்கும் போது, ​​எடுத்துக்காட்டாக, "வங்கிகள்" கோப்பகத்தின் ஒரு உறுப்புக்கான இணைப்பான "வங்கி" புலம், இந்த புலத்தைக் காண்பிக்கும் போது, ​​" என்ற துணை வினவல் என்பதை நீங்கள் புரிந்து கொள்ள வேண்டும். கோப்பகத்தின் பார்வையைப் பெற வங்கிகள்" அடைவு தானாகவே செயல்படுத்தப்படும். இது தரவு வெளியீட்டை மெதுவாக்கும். இதைத் தவிர்க்க, பொருளின் பிரதிநிதித்துவத்தை உடனடியாகப் பெற, பின்னர் அதைப் பார்ப்பதற்குக் காண்பிக்க, கோரிக்கையில் "பிரசன்னேஷன்" கட்டமைப்பைப் பயன்படுத்த வேண்டும்.

தரவு கலவை அமைப்பில், இந்த பொறிமுறையானது இயல்பாகவே பயன்படுத்தப்படுகிறது, ஆனால் கலங்களில் தளவமைப்புகளை உருவாக்கும் போது, ​​நீங்கள் குறிப்பு புலத்தின் பிரதிநிதித்துவத்தை குறிப்பிட வேண்டும், எடுத்துக்காட்டாக, டிரான்ஸ்கிரிப்டில் இணைப்பை வைக்கவும்.

4. டெம்ப்ளேட்டின் படி மாதிரி தரவுகளுக்கான நிபந்தனை.

எடுத்துக்காட்டாக, படிவத்தின் (8 -123- 456-78-912) ஊழியர்களின் மொபைல் போன்களை நீங்கள் பெற வேண்டும். இதைச் செய்ய, கோரிக்கையில் பின்வரும் நிபந்தனையை நீங்கள் அமைக்க வேண்டும்:

பணியாள்.பெயர், பணியாளர்.தொலைபேசி டைரக்டரியில் இருந்து ஃபோன் எனத் தேர்ந்தெடுக்கவும். பணியாளர்களாக பணியாளர்கள் போன்ற தொலைபேசி "_-___-___-___-__"

"_" எழுத்து ஒரு சேவை எழுத்து மற்றும் எந்த எழுத்தையும் மாற்றும்.

5. மொத்தங்கள் மற்றும் குழுக்களின் ஒரே நேரத்தில் பயன்பாடு.


மொத்தங்கள் பெரும்பாலும் குழுக்களுடன் இணைந்து பயன்படுத்தப்படுகின்றன, மொத்த செயல்பாடுகள் மொத்தத்தில் குறிப்பிடப்படாமல் இருக்கலாம்.

சேவைகளை வழங்குதல். நிறுவனமாக அமைப்பு, சேவைகளை வழங்குதல். பெயரிடல் என பெயரிடல், தொகை (சேவைகள் வழங்குதல். ஆவணத்தின் அளவு) ஆவணத்தில் இருந்து ஆவணத்தின் கூட்டுத்தொகை. சேவைகள்.பொது, அமைப்பு, பெயரிடல் முடிவுகள்

இந்த வழக்கில், வினவல் பின்வரும் வினவலைப் போலவே திரும்பும்:

சேவைகளை வழங்குதல். நிறுவனமாக அமைப்பு, சேவைகளை வழங்குதல். பெயரிடல் என பெயரிடல், சேவைகளை வழங்குதல். ஆவணத்தில் இருந்து ஆவணத்தின் அளவு ஆவணத்தின் அளவு பெயரிடல்

முதல் வினவல் மட்டுமே அதே பெயரிடலுடன் பதிவுகளை சுருக்கும்.

6. புலங்களை விலக்குதல்.

ஒரு புள்ளி மூலம் புலங்களைக் குறிப்பிடுவது குறிப்பு புலத்தை நீக்குதல் செயல்பாடு என்று அழைக்கப்படுகிறது. உதாரணத்திற்கு பணம் செலுத்துதல்.அமைப்பு.நிர்வாக அலகு. இந்த வழக்கில், "கட்டணம்" ஆவணத்தின் "அமைப்பு" என்ற குறிப்பு புலத்தில், "நிர்வாக அலகு" பண்புக்கூறின் மதிப்பு பெறப்படும் மற்றொரு அட்டவணை "நிறுவனங்கள்" என்பதைக் குறிக்கிறது. ஒரு புள்ளி மூலம் புலங்களை அணுகும் போது, ​​இயங்குதளம் மறைமுகமாக ஒரு துணை வினவலை உருவாக்கி இந்த அட்டவணைகளுடன் இணைகிறது என்பதைப் புரிந்துகொள்வது அவசியம்.

கோரிக்கை:

இவ்வாறு குறிப்பிடலாம்:

Payment.Link, Payment.Organization, Payment.Organization, Organizations ஆகியவற்றைத் தேர்ந்தெடுக்கவும். ஆவணத்திலிருந்து நிர்வாக பிரிவு

ஒரு கூட்டு வகையின் குறிப்புப் புலங்களைத் தவிர்க்கும் போது, ​​அந்தத் துறையின் வகையின் ஒரு பகுதியாக இருக்கும் அனைத்து அட்டவணைகளுக்கும் உள்ளுறை இணைப்புகளை உருவாக்க கட்டமைப்பு முயற்சிக்கிறது. இந்த வழக்கில், வினவல் உகந்ததாக இருக்காது, அது எந்த வகையான புலம் என்பது தெளிவாகத் தெரிந்தால், அத்தகைய புலங்களை ஒரு கட்டமைப்பைக் கொண்டு வரம்பிட வேண்டும் எக்ஸ்பிரஸ்().

எடுத்துக்காட்டாக, ஒரு குவிப்பு பதிவு "விநியோகிக்கப்படாத கொடுப்பனவுகள்" உள்ளது, அங்கு பல ஆவணங்கள் பதிவாளராக செயல்பட முடியும். இந்த வழக்கில், பதிவாளர் விவரங்களின் மதிப்புகளை இந்த வழியில் பெறுவது தவறானது:

ஒதுக்கப்படாத கொடுப்பனவுகளைத் தேர்ந்தெடுக்கவும்.பதிவு.தேதி, ..... பதிவேட்டில் இருந்து.

லாகர் செய்ய கலப்பு புலத்தின் வகையை நீங்கள் கட்டுப்படுத்த வேண்டும்:

எக்ஸ்பிரஸ் (ஒதுக்கப்படாத கொடுப்பனவுகள். ஆவணமாகப் பதிவுசெய்க. பணம் செலுத்துதல்).தேதி, ..... பதிவேட்டில் இருந்து.

7. கட்டுமானம் "எங்கே"

இரண்டு அட்டவணைகள் இடதுபுறமாக இணைவதன் மூலம், வலது அட்டவணையில் "WHERE" என்ற நிபந்தனையை நீங்கள் விதிக்கும்போது, ​​அட்டவணைகளின் உள் இணைப்பின் முடிவைப் போன்ற முடிவைப் பெறுவோம்.

உதாரணமாக. கிளையண்ட் டைரக்டரியில் இருந்து அனைத்து வாடிக்கையாளர்களையும் தேர்ந்தெடுப்பது அவசியம் மற்றும் "அமைப்பு" = &அமைப்பு என்ற பண்புக்கூறின் மதிப்புடன் கட்டண ஆவணத்தை வைத்திருக்கும் வாடிக்கையாளர்களுக்கு, "கட்டணம்" என்ற ஆவணத்தைக் காண்பிக்க வேண்டும், இல்லாதவர்களுக்கு, அதைக் காட்ட வேண்டாம்.

வினவலின் முடிவு, அளவுருவில் அமைப்பு மூலம் பணம் செலுத்திய வாடிக்கையாளர்களுக்கு மட்டுமே பதிவுகளை வழங்கும், மேலும் பிற வாடிக்கையாளர்களை வடிகட்டவும். எனவே, நீங்கள் முதலில் "அத்தகைய மற்றும் அத்தகைய" நிறுவனத்திற்கான அனைத்து கட்டணங்களையும் ஒரு தற்காலிக அட்டவணையில் பெற வேண்டும், பின்னர் அதை "வாடிக்கையாளர்" கோப்பகத்துடன் இணைக்க வேண்டும்.

கொடுப்பனவைத் தேர்ந்தெடு. கொடுப்பனவாக இணைப்பு, பணம் செலுத்துதல். ஆவணத்திலிருந்து பணம் செலுத்துவதற்கான வாடிக்கையாளர் இடமாக பங்குதாரர். பணம் செலுத்தும் இடத்தில் பணம் செலுத்துதல். கிளை = & கிளை; ////////////////////////////////////////////// ////////////////////////// கிளையண்டாகத் தேர்ந்தெடுக்கவும் க்ளையண்ட்ஸ் லெஃப்ட் கனெக்ஷன் டோப் பேமென்ட்ஸ் டோப் பேமென்ட்ஸ் சாஃப்ட்வேர் க்ளையண்ட்ஸ்.லிங்க் = டாப் பேமென்ட்ஸ்.க்ளையன்ட்

இந்த நிலையை நீங்கள் வேறு வழியில் சமாளிக்கலாம். இரண்டு அட்டவணைகளுக்கு இடையிலான உறவில் நேரடியாக "WHERE" நிபந்தனையை விதிக்க வேண்டியது அவசியம். உதாரணமாக:

Clients.Link, Payment.Link ஐ டைரக்டரியில் இருந்து தேர்ந்தெடுக்கவும். US_Subscribers AS US_Subscribers LEFT Connection Document.Payment as Payment Software (Clients.Link = Payment.Client மற்றும் Payment.Client.பெயர், "சர்க்கரை பாக்கெட்" போன்ற குழுக்கள், GROUPLYk Climent. இணைப்பு

8. உள்ளமைக்கப்பட்ட மற்றும் மெய்நிகர் அட்டவணைகளுடன் இணைகிறது

உள்ளமை வினவல்கள்சில நிபந்தனைகளின் அடிப்படையில் தரவை மீட்டெடுக்க பெரும்பாலும் அவசியம். நீங்கள் மற்ற அட்டவணைகளுடன் அவற்றைப் பயன்படுத்தினால், இது வினவலின் செயல்பாட்டின் வேகத்தைக் குறைக்கும்.

எடுத்துக்காட்டாக, சில வாடிக்கையாளர்களுக்கு தற்போதைய தேதியின்படி இருப்புத் தொகையைப் பெற வேண்டும்.

ஒதுக்கப்படாத கொடுப்பனவுகளை தேர்ந்தெடுங்கள் Nested nyRequest.Link மூலம் ஒதுக்கப்படாத கொடுப்பனவுகள் = ஒதுக்கப்படாத பேமென்ட்ஸ் பேலன்ஸ்கள். வாடிக்கையாளர்

அத்தகைய வினவலைச் செயல்படுத்தும் போது, ​​ஒரு திட்டத்தைத் தேர்ந்தெடுக்கும் போது DBMS ஆப்டிமைசர் பிழைகளை ஏற்படுத்தலாம், இது வினவலின் துணைச் செயல்பாட்டிற்கு வழிவகுக்கும். இரண்டு அட்டவணைகளை இணைக்கும் போது, ​​DBMS ஆப்டிமைசர் இரண்டு அட்டவணைகளிலும் உள்ள பதிவுகளின் எண்ணிக்கையின் அடிப்படையில் ஒரு அட்டவணை சேரும் அல்காரிதத்தைத் தேர்ந்தெடுக்கிறது. உள்ளமை வினவல் இருந்தால், உள்ளமை வினவல் திரும்பும் பதிவுகளின் எண்ணிக்கையைத் தீர்மானிப்பது மிகவும் கடினம். எனவே, நீங்கள் எப்போதும் உள்ளமை வினவல்களுக்குப் பதிலாக தற்காலிக அட்டவணைகளைப் பயன்படுத்த வேண்டும். எனவே கோரிக்கையை மீண்டும் எழுதுவோம்.

Clients.Link as Link as Link PLACE tClients from Directory. Clients as Clients WHERE
Clients.Link B (&வாடிக்கையாளர்) ; ////////////////////////////////////////////// //////////////////////// IN (tClients.Link from tClients)) ஒதுக்கப்படாத கொடுப்பனவுகள் tClients.Link = UnallocatedPaymentsBalances.Clients

இந்த வழக்கில், ஆப்டிமைசரால் தற்காலிக அட்டவணை tClients எத்தனை பதிவுகளைப் பயன்படுத்துகிறது என்பதைத் தீர்மானிக்க முடியும் மற்றும் அட்டவணையில் இணைவதற்கான உகந்த வழிமுறையைத் தேர்ந்தெடுக்க முடியும்.

மெய்நிகர் அட்டவணைகள் , பெரும்பாலான பயன்படுத்தப்பட்ட பணிகளுக்கு நடைமுறையில் தயாராக உள்ள தரவைப் பெற உங்களை அனுமதிக்கும் (முதல் துண்டின் ஸ்லைஸ், ஸ்லைஸ் ஆஃப் தி லாஸ்ட், ரிமைன்ஸ், டர்னோவர்ஸ், ரிமைன்ஸ் மற்றும் டர்னோவர்ஸ்) இங்குள்ள முக்கிய வார்த்தை மெய்நிகர். இந்த அட்டவணைகள் உடல் சார்ந்தவை அல்ல, ஆனால் பறக்கும் கணினியால் தொகுக்கப்படுகின்றன, அதாவது. மெய்நிகர் அட்டவணையில் இருந்து தரவைப் பெறும்போது, ​​கணினி இறுதிப் பதிவு அட்டவணையில் இருந்து தரவைச் சேகரித்து, அசெம்பிள் செய்து, குழுக்களாகப் பயன்படுத்தி பயனருக்கு வழங்குகிறது.

அந்த. மெய்நிகர் அட்டவணையுடன் இணைக்கும் போது, ​​ஒரு துணை வினவலுக்கு ஒரு இணைப்பு செய்யப்படுகிறது. இந்த வழக்கில், டிபிஎம்எஸ் ஆப்டிமைசர் உகந்ததாக இல்லாத இணைப்புத் திட்டத்தையும் தேர்வு செய்யலாம். வினவல் போதுமான அளவு விரைவாக உருவாக்கப்படவில்லை மற்றும் வினவல் மெய்நிகர் அட்டவணையில் இணைந்தால், மெய்நிகர் அட்டவணைகளுக்கான அணுகலை ஒரு தற்காலிக அட்டவணைக்கு நகர்த்தவும், பின்னர் இரண்டு தற்காலிக அட்டவணைகளுக்கு இடையில் இணைக்கவும் பரிந்துரைக்கப்படுகிறது. முந்தைய கோரிக்கையை மீண்டும் எழுதுவோம்.

Clients.Link as Link Place tClients from Directory. Clients as Clients INDEX மூலம் இணைப்பு
Clients.Link B (&Clients) ; ////////////////////////////////////////////// ////////////////////////// ஒதுக்கப்படாத கொடுப்பனவுகளைத் தேர்ந்தெடு tClients லிருந்து இணைப்பைத் தேர்ந்தெடுக்கவும்)) ஒதுக்கப்படாத பேமெண்ட்கள் ////////////////////////////////////////////// //////////////////////// = tRemainings.கிளையன்ட்

9.கோரிக்கையின் முடிவைச் சரிபார்த்தல்.

வினவலின் முடிவு காலியாக இருக்கலாம், வெற்று மதிப்புகளைச் சரிபார்க்க, பின்வரும் கட்டமைப்பைப் பயன்படுத்தவும்:

ResRequest = Request.Execute(); resQuery.Empty() என்றால் திரும்பவும்; முடிவு என்றால்;

முறை காலியாக()முறைகளுக்கு முன் பயன்படுத்த வேண்டும் தேர்வு()அல்லது இறக்கு(), சேகரிப்பை மீட்டெடுக்க நேரம் எடுக்கும் என்பதால்.

ஒரு லூப்பில் வினவல்களைப் பயன்படுத்துவது மிகவும் விரும்பத்தகாதது என்பது யாருக்கும் வெளிப்படுத்தப்படவில்லை. இது ஒரு குறிப்பிட்ட செயல்பாட்டின் இயக்க நேரத்தை கடுமையாக பாதிக்கலாம். கோரிக்கையில் உள்ள அனைத்து தரவையும் பெறுவது மிகவும் விரும்பத்தக்கது, பின்னர் தரவை ஒரு சுழற்சியில் செயலாக்குகிறது. ஆனால் சில நேரங்களில் கோரிக்கையை வளையத்திற்கு வெளியே நகர்த்துவது சாத்தியமில்லாத சந்தர்ப்பங்கள் உள்ளன. இந்த வழக்கில், தேர்வுமுறைக்கு, நீங்கள் வினவலின் உருவாக்கத்தை வளையத்திற்கு வெளியே நகர்த்தலாம், மேலும் சுழற்சியில், தேவையான அளவுருக்களை மாற்றி வினவலை இயக்கவும்.

கோரிக்கை = புதிய கோரிக்கை; Query.Text = "தேர்ந்தெடுக்கவும் டேபிள் கிளையண்ட்ஸ் லூப் வினவலில் இருந்து ஒவ்வொரு வரிசைக்கும்.SetParameter("கிளையண்ட்", கிளையண்ட்); QueryResult = Query.Execute().Select(); எண்ட்சைக்கிள்;

இது ஒரு லூப்பில் கோரிக்கையைச் சரிபார்ப்பதில் இருந்து கணினியைச் சேமிக்கும்.

11. கட்டுமானம் "உள்ளது".

கோரிக்கைகளில் மிகவும் அரிதான வடிவமைப்பு. மொத்த செயல்பாடுகளின் மதிப்புகளில் நிபந்தனைகளை விதிக்க உங்களை அனுமதிக்கிறது (தொகை, குறைந்தபட்சம், சராசரி, முதலியன). எடுத்துக்காட்டாக, செப்டம்பரில் 13,000 ரூபிள்களுக்கு மேல் பணம் செலுத்திய வாடிக்கையாளர்களை மட்டுமே நீங்கள் தேர்ந்தெடுக்க வேண்டும். நீங்கள் "WHERE" நிபந்தனையைப் பயன்படுத்தினால், நீங்கள் முதலில் ஒரு தற்காலிக அட்டவணை அல்லது உள்ளமை வினவல் ஒன்றை உருவாக்க வேண்டும், கட்டணத் தொகையின் அடிப்படையில் பதிவுகளை குழுவாகச் செய்து பின்னர் நிபந்தனையைப் பயன்படுத்த வேண்டும். "ஹவிங்" கட்டுமானம் இதைத் தவிர்க்க உதவும்.

கட்டணத்தைத் தேர்ந்தெடுக்கவும்.வாடிக்கையாளர், AMOUNT (பணம். தொகை) ஆவணத்தில் இருந்து தொகையாக. பணம் செலுத்தும் இடம் (பணம் செலுத்துதல். தேதி) = 9 குழு மூலம் பணம் செலுத்துங்கள். வாடிக்கையாளருக்குத் தொகை (பணம். தொகை) > 13000

கன்ஸ்ட்ரக்டரில், இதைச் செய்ய, "நிபந்தனைகள்" தாவலுக்குச் சென்று, புதிய நிபந்தனையைச் சேர்த்து, "தனிப்பயன்" தேர்வுப்பெட்டியைச் சரிபார்க்கவும். பிறகு எழுதுங்கள் தொகை(கட்டணம். தொகை) > 13000


12. NULL மதிப்பு

தரவுத்தளத்தில் மூன்று மதிப்புள்ள தர்க்கத்தின் கொள்கைகளை நான் இங்கு விவரிக்க மாட்டேன், இந்த தலைப்பில் பல கட்டுரைகள் உள்ளன. எப்படி என்பது பற்றி சுருக்கமாக ஏதுமில்லைவினவலின் முடிவை பாதிக்கலாம். NULL மதிப்பு உண்மையில் ஒரு மதிப்பு அல்ல, மேலும் அந்த மதிப்பு வரையறுக்கப்படவில்லை என்பது தெரியவில்லை. எனவே, NULL உடன் எந்த ஒரு செயல்பாடும் NULL ஐ வழங்குகிறது, அது கூட்டல், கழித்தல், வகுத்தல் அல்லது ஒப்பீடு. ஒரு NULL மதிப்பை ஒரு NULL மதிப்புடன் ஒப்பிட முடியாது, ஏனென்றால் எதை ஒப்பிடுவது என்று எங்களுக்குத் தெரியாது. அந்த. இந்த இரண்டு ஒப்பீடுகளும்: NULL = NULL, NULL<>NULL என்பது உண்மையோ பொய்யோ அல்ல, அது தெரியவில்லை.

ஒரு உதாரணத்தைப் பார்ப்போம்.

பணம் செலுத்தாத வாடிக்கையாளர்களுக்கு, "பணம் செலுத்தவில்லை" என்ற மதிப்புடன் "கையொப்பம்" புலத்தை நாங்கள் காட்ட வேண்டும். மேலும், எங்களிடம் அத்தகைய வாடிக்கையாளர்கள் இருப்பதை நாங்கள் உறுதியாக அறிவோம். நான் மேலே எழுதியவற்றின் சாராம்சத்தை பிரதிபலிக்கும் வகையில், அதை இந்த வழியில் செய்வோம்.

பண்புக்கூறாக "கட்டணங்கள் இல்லை" என்பதைத் தேர்ந்தெடுக்கவும். ////////////////////////////////////////////// ////////////////////////// வாடிக்கையாளராக இணைப்பைத் தேர்வுசெய்க பணம் செலுத்தும் மென்பொருள் Clients.Link = Payment.Shareholder; ////////////////////////////////////////////// ////////////////////// tClientPayment ஐ தேர்ந்தெடுங்கள்

இரண்டாவது தற்காலிக அட்டவணைக்கு கவனம் செலுத்துங்கள் tClientPayment. இடதுபுறத்தில் நான் அனைத்து வாடிக்கையாளர்களையும் இந்த வாடிக்கையாளர்களுக்கான அனைத்து கட்டணங்களையும் தேர்ந்தெடுக்கிறேன். பணம் செலுத்தாத வாடிக்கையாளர்களுக்கு, "கட்டணம்" புலம் NULL ஆக இருக்கும். தர்க்கத்தைப் பின்பற்றி, முதல் தற்காலிக அட்டவணை "tPayments" இல் நான் 2 புலங்களை நியமித்தேன், அவற்றில் ஒன்று NULL, இரண்டாவது வரி "பணம் செலுத்தவில்லை". மூன்றாவது அட்டவணையில், "பணம் செலுத்துதல்" மற்றும் "ஆவணம்" ஆகிய புலங்களைப் பயன்படுத்தி "tClientPayment" மற்றும் "tPayment" அட்டவணைகளை உள் இணைப்புடன் இணைக்கிறேன். முதல் அட்டவணையில் "ஆவணம்" புலம் NULL என்றும், இரண்டாவது அட்டவணையில், "பணம் செலுத்துதல்" புலத்தில் பணம் செலுத்தாதவர்களும் NULL என்றும் அறிகிறோம். அத்தகைய இணைப்பு நமக்கு என்ன திரும்பும்? ஆனால் அது எதையும் திருப்பித் தராது. ஏனெனில் NULL = NULL என்ற ஒப்பீடு Trueக்கு மதிப்பளிக்காது.

எதிர்பார்த்த முடிவைத் திரும்பக் கோருவதற்கு, அதை மீண்டும் எழுதுவோம்:

"கட்டணங்கள் இல்லை" என்பதை பண்புக்கூறு, மதிப்பு (Document.Payment.EmptyLink) ஆவணமாக பணம் செலுத்தும் இடமாக தேர்ந்தெடுக்கவும்; ////////////////////////////////////////////// ////////////////////////// வாடிக்கையாளர்களாக இணைப்பைத் தேர்ந்தெடுக்கவும், ISNULL(Payment.Link, VALUE(Document.Payment.EmptyLink )) எப்படி கோப்பகத்திலிருந்து tClientPayment PUT tClientPayment. வாடிக்கையாளர்களாக வாடிக்கையாளர்கள் இடது இணைப்பு ஆவணம். Clients மூலம் பணம் செலுத்துதல்.Link = Payment.Shareholder; ////////////////////////////////////////////// ////////////////////// tClientPayment ஐ தேர்ந்தெடுங்கள்

இப்போது, ​​இரண்டாவது தற்காலிக அட்டவணையில், "பணம் செலுத்துதல்" புலம் NULL எனில், இந்த புலம் = கட்டண ஆவணத்திற்கான வெற்று இணைப்பு என்று குறிப்பிட்டுள்ளோம். முதல் அட்டவணையில் நாங்கள் NULL ஐ வெற்று குறிப்புடன் மாற்றியுள்ளோம். இப்போது இணைப்பு NULL அல்லாத புலங்களை உள்ளடக்கியது மற்றும் கோரிக்கை எதிர்பார்த்த முடிவை வழங்கும்.

கட்டுரையில் உள்ள அனைத்து கோரிக்கைகளும் நான் கருத்தில் கொள்ள விரும்பும் சூழ்நிலைகளை பிரதிபலிக்கின்றன, மேலும் எதுவும் இல்லை. பற்றி அவர்கள் மாயை அல்லது துணை இருக்கக்கூடாது, முக்கிய விஷயம் என்னவென்றால், அவை உதாரணத்தின் சாரத்தை பிரதிபலிக்கின்றன.

13. "CHOICE WHEN...அப்போது...END" வடிவமைப்பின் ஆவணமற்ற அம்சம்.

கோரிக்கையில் "நிபந்தனைகள்" கட்டமைப்பை விவரிக்க வேண்டிய அவசியம் ஏற்பட்டால், நாங்கள் நிலையான தொடரியல் பயன்படுத்துகிறோம்:

பயனர்கள்.பெயர் = "வாஸ்யா புப்கின்" பின்னர் "எங்களுக்கு பிடித்த பணியாளர்" இல்லையெனில் "இது எங்களுக்குத் தெரியாது" என முடிவு செய்யும் போது தேர்வைத் தேர்ந்தெடுக்கவும். டைரக்டரியில் இருந்து களம்1. பயனர்களாக பயனர்கள்

எடுத்துக்காட்டாக, கோரிக்கையில் மாதத்தின் பெயரைப் பெற வேண்டுமானால் என்ன செய்வது? ஒரு கோரிக்கையில் ஒரு பெரிய கட்டுமானத்தை எழுதுவது அசிங்கமானது மற்றும் நேரத்தை எடுத்துக்கொள்ளும், எனவே மேலே எழுதப்பட்ட இந்த வடிவம் எங்களுக்கு உதவும்:

தேர்வு மாதம்(US_Calculation_TurnoverSchedule.CalculationPeriod) எப்போது 1 பின்னர் "ஜனவரி" எப்போது 2 பின்னர் "பிப்ரவரி" எப்போது 3 பின்னர் "மார்ச்" எப்போது 4 பின்னர் "ஏப்ரல்" எப்போது "ஜூன் 5" பின்னர் "ஜூன் 5" uly" எப்போது 8 பின்னர் "ஆகஸ்ட்" எப்போது 9 பின்னர் "செப்டம்பர்" எப்போது 10 பின்னர் "அக்டோபர்" எப்போது 11 பின்னர் "நவம்பர்" எப்போது 12 பின்னர் "டிசம்பர்" ஒரு மாதமாக முடியும்

இப்போது வடிவமைப்பு சிக்கலானதாகத் தெரிகிறது மற்றும் புரிந்துகொள்ள எளிதானது.

14. ஒரு கோரிக்கையின் தொகுப்பை நிறைவேற்றுதல்.


கோரிக்கைகளை பெருக்காமல் இருக்க, நீங்கள் ஒரு பெரிய கோரிக்கையை உருவாக்கலாம், அதை தொகுப்புகளாகப் பிரித்து அதனுடன் வேலை செய்யலாம்.
எடுத்துக்காட்டாக, "பயனர்கள்" கோப்பகத்திலிருந்து பின்வரும் புலங்களைப் பெற வேண்டும்: "பிறந்த தேதி" மற்றும் ஒவ்வொரு பயனருக்கும் கிடைக்கும் பாத்திரங்கள். படிவத்தில் வெவ்வேறு அட்டவணைப் பகுதிகளுக்கு இதைப் பதிவேற்றவும். நிச்சயமாக, நீங்கள் இதை ஒரு கோரிக்கையில் செய்யலாம், பின்னர் நீங்கள் பதிவுகளை மீண்டும் செய்ய வேண்டும் அல்லது அவற்றைச் சுருக்க வேண்டும், அல்லது நீங்கள் இதைச் செய்யலாம்:

பயனர்களைத் தேர்ந்தெடுங்கள்.இணைப்பு முழுப்பெயர், பயனர்கள்.பிறந்த தேதி, பயனர்கள்.கோப்பகத்திலிருந்து பயனர்கள் பங்கு. பயனர்களாக பயனர்கள்; ////////////////////////////////////////////// ///////////////////// . பிறந்த தேதி; ////////////////////////////////////////////// /////////////////// பிறப்பு

tPackage = Request.ExecutePackage();

TP_BirthDate = tPackage.Upload();
TP_Roles = tPackage.Unload();

நாம் பார்க்கிறபடி, வினவலை ஒரு தொகுப்பாகச் செயல்படுத்தலாம் மற்றும் முடிவை ஒரு வரிசையாகச் செயல்படுத்தலாம். சில சந்தர்ப்பங்களில் இது மிகவும் வசதியானது.

15. ஒரு தொகுதி கோரிக்கையில் உள்ள நிபந்தனைகள்

எடுத்துக்காட்டாக, எங்களிடம் ஒரு தொகுதி கோரிக்கை உள்ளது, அங்கு முதலில் புலங்களைப் பெறுவோம்: "பயனர்கள்" கோப்பகத்திலிருந்து "பெயர், பிறந்த தேதி, குறியீடு" மற்றும் "தனிநபர்கள்" கோப்பகத்திலிருந்து இந்த புலங்களுக்கான நிபந்தனைகளுடன் பதிவுகளைப் பெற விரும்புகிறோம்.

பயனர்கள்.தனிநபர்.பெயர் என பெயர், பயனர்கள்.தனிநபர்கள்.பிறந்த தேதியாக பிறந்த தேதி, பயனர்கள்.தனிநபர்கள்.குறியீடு என கோட் இடம் vtUsers கோப்பகத்திலிருந்து பயனர்கள். பயனர்களாக பயனர்கள்; ////////////////////////////////////////////// //////////////////

இதுபோன்ற நிபந்தனைகளை நீங்கள் விதிக்கலாம்:

எங்கே தனிநபர்கள்.குறியீடு IN (vtUsers. VtUsers ஐத் தேர்ந்தெடுக்கவும். VtUsers ஐத் தேர்ந்தெடுக்கவும்) மற்றும் தனிநபர்கள். IN (vtUsers ஐத் தேர்ந்தெடுக்கவும். vtUsers ஐத் தேர்ந்தெடுக்கவும்) மற்றும் தனிநபர்கள்.

நீங்கள் இதை இப்படி செய்யலாம்:

எங்கே (தனிநபர்கள். குறியீடு, தனிநபர்கள்.பெயர், தனிநபர்கள். பிறந்த தேதி) IN (tueUsers.Code, tueUsers.பெயர், tueUsers. tueUsers லிருந்து பிறந்த தேதி)

மேலும், ஒழுங்கை பராமரிக்க வேண்டியது அவசியம்.

16. ஒரு தொகுதி கோரிக்கையில் "நிபந்தனை"க்காக வினவல் பில்டரை அழைக்கிறது

மேலே உள்ள எடுத்துக்காட்டில், ஒரு நிபந்தனையை விதிக்க வேண்டிய அவசியம் ஏற்பட்டால், மெய்நிகர் அட்டவணையில் இந்த அல்லது அந்த புலம் எவ்வாறு அழைக்கப்படுகிறது என்பதை நீங்கள் மறந்துவிடலாம்.
எடுத்துக்காட்டாக, நீங்கள் "பிறந்த தேதி" புலத்தில் ஒரு நிபந்தனையை விதிக்க வேண்டும், மேலும் மெய்நிகர் அட்டவணையில் இந்த புலம் "கடனாளியின் பிறந்த தேதி" என்று அழைக்கப்படுகிறது, மேலும் நீங்கள் பெயரை மறந்துவிட்டால், நிபந்தனையைத் திருத்தாமல் வெளியேற வேண்டும். சேமித்து, புலத்தின் பெயரைப் பாருங்கள். இதைத் தவிர்க்க, நீங்கள் பின்வரும் நுட்பத்தைப் பயன்படுத்தலாம்.

"பி" கட்டுமானத்திற்குப் பிறகு அடைப்புக்குறிகளை வைப்பது அவசியம் மற்றும் அடைப்புக்குறிகளுக்கு இடையில் ஒரு வெற்று இடத்தை (இடம்) விட்டு, இந்த இடத்தைத் தேர்ந்தெடுத்து வினவல் கட்டமைப்பாளரை அழைக்கவும். தொகுதி வினவலின் அனைத்து அட்டவணைகளுக்கும் வடிவமைப்பாளருக்கு அணுகல் இருக்கும். இந்த நுட்பம் மெய்நிகர் பதிவு அட்டவணைகள் மற்றும் "நிபந்தனைகள்" தாவலில் வேலை செய்கிறது. பிந்தைய வழக்கில், நீங்கள் "P (தன்னிச்சையான நிபந்தனை)" பெட்டியை சரிபார்த்து, எடிட்டிங் பயன்முறையில் "F4" ஐ உள்ளிட வேண்டும்.

வினவல்கள் அடிக்கடி பறக்கும் போது உருவாக்கப்பட்டன, மேலும் அவை நான் பரிசீலித்த "தொழில்நுட்பங்களை" விளக்குவதற்கு உதவுகின்றன.

வினவல்களில் குறியீடுகளின் பயன்பாட்டைப் பார்க்க விரும்பினேன், ஆனால் இது மிகவும் பரந்த தலைப்பு. நான் அதை ஒரு தனி கட்டுரையில் வைக்கிறேன் அல்லது பின்னர் அதை இங்கே சேர்க்கிறேன்.

upd1. புள்ளிகள் 11,12
upd2. புள்ளிகள் 13,14,15,16

பயன்படுத்திய புத்தகங்கள்:
வினவல் மொழி "1C:Enterprise 8" - E.Yu. க்ருஸ்தலேவா
1C:எண்டர்பிரைஸ் 8 அமைப்பில் தொழில்முறை மேம்பாடு."

காட்சிகள்