اتصال سمت چپ 1s 8. اتصال چپ و راست


وقتی می خواهیم داده های چند جدول را همزمان ببینیم، i.e. برای جمع آوری چندین جدول در یک جدول، مفهوم اتصال جداول و روابط بین آنها بوجود می آید. چهار نوع اتصال وجود دارد:

  • ترک کرد؛
  • درست،
  • درونی؛ داخلی؛
  • کامل.

ما هر نوع را با استفاده از یک مثال انتزاعی بررسی خواهیم کرد. 2 جدول وجود دارد، در اول اطلاعات توصیفی در مورد مورد ذخیره می کنیم، در جدول دوم در مورد موجودی آن:

برای به دست آوردن یکی از این جداول، باید به صراحت مشخص کنیم که کدام فیلدها را با چه شرایط و نوع متصل خواهیم کرد. حالا روشن تر خواهد شد.

اتصال سمت چپ

با استفاده از اتصال چپ، به سیستم می گوییم که در نتیجه می خواهیم تمام رکوردهای جدول سمت چپ و رکوردهایی از سمت راست را که شرایط اتصال را برآورده می کنند، ببینیم. فرض کنید جداول را توسط فیلد محصول با شرط مساوی به هم وصل کنیم، جدولی مانند:

درخواست.متن =
"انتخاب کنید
| نامگذاری.محصول،
| Nomenclature.Color AS ColorNomenclature,
| Remains.Color AS Color Remains,
| توازن. کمیت
|از

";

هیچ منطبقی برای صندلی از جدول باقیمانده ها وجود نداشت، بنابراین فیلدها با مقادیر NULL پر شدند، که باید توسط تابع ISNULL پردازش شوند، به 1C 8 توابع زبان پرس و جو مراجعه کنید.

اتصال سمت چپ تقریباً مانند یک حلقه در یک حلقه کار می کند - اولین رکورد را از جدول سمت چپ می گیرد و از تمام رکوردهای جدول سمت راست عبور می کند تا اطمینان حاصل شود که شرایط اتصال برقرار است. سپس رکورد دوم از جدول سمت چپ گرفته می شود و به همین ترتیب. اگر به طور ناگهانی چندین رکورد از جدول سمت راست شرایط اتصال را برآورده کند، سپس چندین ردیف به جدول حاصل اضافه می شود (با توجه به تعداد اتصالات موفق) همانطور که می بینیم جدول به دست آمده آموزنده نیست، داده ها منعکس نمی شوند. ماهیت واقعی است، بنابراین بهتر است این جداول را با دو فیلد به هم متصل کنید: Product و Color، فقط این بار NULL ها را مدیریت می کنیم:

درخواست.متن =
"انتخاب کنید
| نامگذاری.محصول،
| نامگذاری.رنگ،
| ISNULL(Remaining.Quantity, 0) AS Quantity
|از
| نامگذاری AS نامگذاری
| چپ پیوستن به باقی مانده به عنوان باقی مانده
| نرم افزار Nomenclature.Product = Remaining.Product

اتصال درست

اتصال سمت راست اساساً هیچ تفاوتی با سمت چپ ندارد. اگر جداول را عوض کنید، اتصال سمت راست به یک پیوست سمت چپ تبدیل می‌شود؛ علاوه بر این، هنگام استفاده از سازنده، خود سیستم همه اتصال‌های راست را به اتصالات چپ تبدیل می‌کند.

پیوستن داخلی

با استفاده از اتصال داخلی، به سیستم می گوییم که در نتیجه می خواهیم فقط آن رکوردهایی را ببینیم که شرایط اتصال را هم از جدول سمت راست و هم از سمت چپ برآورده می کنند. بنابراین، تعداد رکوردهای به دست آمده کمتر یا برابر با تعداد رکوردهای کوتاه ترین جدول شرکت کننده در پیوند خواهد بود. بیایید یک اتصال داخلی به فیلدهای Product و Color جداول خود اعمال کنیم:

درخواست.متن =
"انتخاب کنید
| نامگذاری.محصول،
| نامگذاری.رنگ،
| Remainings.Quantity AS مقدار
|از
| نامگذاری AS نامگذاری
| INNER JOIN Remainders AS Remainders
| نرم افزار Nomenclature.Product = Remaining.Product
| و Nomenclature.Color = Remaining.Color";

اتصال کامل

پیوستن کامل به همه رکوردها از هر دو جدول منجر می شود، آن رکوردهایی که شرایط اتصال را برآورده می کنند متصل می شوند، رکوردهایی که شرایط اتصال را برآورده نمی کنند همچنان در نتیجه پرس و جو ختم می شوند، اما با برخی از فیلدهای NULL. Complete مانند اتصالات چپ و راست در یک است.

ممکن است مشکلات زیادی در مورد این موضوع وجود داشته باشد، بیایید سعی کنیم یکی از آنها را حل کنیم. سازمان ما فروشنده 2 کارخانه مبلمان "زاریا" و "راسوت" است. مجموعه با هزینه هر یک از کارخانه ها در جداول مختلف ذخیره می شود. ایجاد یک لیست قیمت واحد و شامل محصولات با حداقل قیمت ضروری است:

بیایید یک پیوست کامل با مجموعه ای از تمام فیلدها اعمال کنیم، ما بر اساس محصول به هم متصل خواهیم شد:

درخواست.متن =
"انتخاب کنید
| نامگذاری زاریا. محصول به عنوان محصول زاریا،
| نامگذاریZarya.قیمت به عنوان قیمت Zarya,
| نامگذاری Rassvet محصول AS محصول Rassvet،
| نامگذاریRassvet.Price AS PriceRassvet
|از

این دقیقاً همان چیزی نیست که ما به آن نیاز داریم، بیایید زمینه محصول را با هم ترکیب کنیم و NULL ها را پردازش کنیم:

درخواست.متن =
"انتخاب کنید
//ساخت ISNULL در بخش توابع زبان پرس و جو مورد بحث قرار گرفت
//اگر قیمت تعریف نشده است، آن را مقداردهی اولیه کنید
//چرا 1000000 توضیح زیر را ببینید
| ISNULL(NomenclatureZarya.Price, 1000000) AS PriceZarya,
| ISNULL(NomenclatureRassvet.Price, 1000000) AS PriceRassvet
|از
| نامگذاریZarya AS NomenclatureZarya
| FULL CONNECTION NomenclatureDawn AS NomenclatureDawn
| نرم افزار NomenclatureZarya.Product = NomenclatureDawn.Product";

تنها چیزی که باقی می ماند انتخاب حداقل قیمت است. متن درخواست نهایی به صورت زیر خواهد بود:

درخواست.متن =
"انتخاب کنید
| ISNULL(NomenclatureZarya.Product، NomenclatureDawn.Product) AS محصول،
| انتخاب
| WHEN THERE ISNULL(NomenclatureZarya.Price, 1000000) > ISNULL(NomenclatureRassvet.Price, 1000000)
| THEN ISNULL (NomenclatureRassvet.Price, 1000000)
| ELSE ISNULL (NomenclatureZarya.Price, 1000000)
| پایان به عنوان قیمت
|از
| نامگذاریZarya AS NomenclatureZarya
| FULL CONNECTION NomenclatureDawn AS NomenclatureDawn
| نرم افزار NomenclatureZarya.Product = NomenclatureDawn.Product";

اگر قیمت (NULL) تعریف نشده باشد، باید با مقداری مقداردهی اولیه شود، در غیر این صورت عملیات مقایسه برای بیشتر/کمتر با یک خطا ناموفق خواهد بود. ما قیمت را با مقدار غیر واقعی بزرگ مقداردهی اولیه می کنیم تا در عملیات مقایسه "بازنده" شود، زیرا با توجه به شرایط مشکل، کمترین قیمت را انتخاب می کنیم.

← توابع زبان پرس و جو 1C 8 | به پرس و جوهای 1C 8 می پیوندد →

توجه! این یک نسخه مقدماتی از درس است که ممکن است مطالب آن ناقص باشد.

به عنوان دانشجو وارد سایت شوید

برای دسترسی به مطالب مدرسه به عنوان دانش آموز وارد شوید

زبان پرس و جو 1C 8.3 برای برنامه نویسان مبتدی: اتصالات

در پرس و جوها شرکت می کند

Joining یکی از مهمترین و ضروری ترین عملیاتی است که توسط سیستم های مدیریت پایگاه داده رابطه ای انجام می شود.

اتصالات استفاده می شود رشته های مطابقتیک جدول به ردیف از جدول دیگر.

برای درک نیاز به اتصال، اجازه دهید مشکل زیر را حل کنیم.

ما یک دایرکتوری در پایگاه داده خود داریم مشتریان:

فهرست راهنما رنگ ها:

و یک کتاب مرجع انجمن ها:

وظیفه ما این است که تداعی های مورد علاقه مشتریان را بر اساس رنگ استخراج کنیم.

بنابراین، برای ناتاشا، چمن تداعی مورد علاقه او خواهد بود، زیرا رنگ مورد علاقه او سبز است. و برای پیتر - خورشید. شما در حال خواندن نسخه آزمایشی درس هستید، دروس کامل در دسترس است.

برای آندری هیچ ارتباط مناسبی وجود ندارد، زیرا رنگ مورد علاقه او قرمز است و هیچ ارتباطی با قرمز در پایگاه داده وجود ندارد.

ما به تدریج مشکل را حل خواهیم کرد.

در ابتدا ما از همه مشتریان و رنگ های مورد علاقه آنها سوال خواهیم کرد:

سپس درخواست همه انجمن ها و رنگ آنها:

اگر بخواهیم این درخواست را اجرا کنیم، یک خطا دریافت خواهیم کرد:

دلیل خطا این است که فیلد نامموجود در هر دو جدول به طور همزمان ( مشتریانو انجمن ها) و سیستم به سادگی نمی داند که این فیلد از کدام جدول است.

برای رفع این گونه ابهامات هنگام نمونه برداری از بیش از یک جدول، مرسوم است که نشان داده شود نام فیلدهای کاملنام کامل فیلد شامل نام کامل جدول است (به عنوان مثال، دایرکتوری. مشتریان) و نام خود فیلد (به عنوان مثال، نام).

بنابراین نام کامل فیلد است ناماز روی میز مشتریاناراده فهرست.مشتریان.نام.

و نام کامل رشته ناماز روی میز انجمن هااراده Directory.Associations.Name.

اتصال متقابل

بیایید پرس و جو قبلی را با نام فیلدهای کامل بازنویسی کنیم:

ما فقط تولید کردیم اتصال متقابلدو میز به نحوه شکل گیری نتیجه توجه کنید:

پیوستن داخلی

بدیهی است که نتیجه پیوند متقاطع دو جدول راه حلی برای مشکل ما نیست. ما به همه رکوردهای متقاطع به پیوستن نیاز نداریم، بلکه فقط به آنهایی که فیلدهای آنهاست نیاز داریم رنگ مورد علاقهو رنگهمین معنی را دارند:

برای دریافت این رکوردها، بخشی را به درخواست قبلی اضافه کنید جایی که:

این چیزی است که ما نیاز داریم - ما مشکل را حل کرده ایم!

در آخرین پرس و جو از یک اتصال متقاطع با یک شرط اضافی (در بخش جایی که). شما در حال خواندن نسخه آزمایشی درس هستید، دروس کامل در دسترس است. به چنین ارتباطی داخلی می گویند.

راه دیگری برای نوشتن همین مطلب وجود دارد پیوستن داخلی:

این و درخواست قبلی را مقایسه کنید. آنها از نقطه نظر پلت فرم دقیقاً یکسان هستند، فقط نحو متفاوتی دارند. هم این و هم پرس و جوهای قبلی حاوی یک پیوستن جدول داخلی هستند مشتریانبا میز انجمن هاتوسط زمینه ها رنگ مورد علاقهو رنگبه ترتیب.

اتصال سمت چپ

لطفاً توجه داشته باشید که نتیجه اتصال داخلی آندری را شامل نمی شود. و همه به این دلیل است که رنگ مورد علاقه او قرمز است و ما اصلاً هیچ ارتباط قرمزی در پایگاه داده خود نداریم.

به نظر می رسد که برای آندری با رنگ قرمزش به سادگی هیچ مسابقه ای از جدول انجمن وجود ندارد.

بیایید پرس و جو را بازنویسی کنیم تا نتیجه شامل رکوردهایی از جدول اول باشد که هیچ جفتی از جدول دوم برای آنها وجود نداشت (در در این موردآندری):

این ارتباط نامیده می شود چپ پیوستن.

آرنتیجه پیوستن چپنشان دهنده: همه چیز سوابق از اتصال داخلیبه علاوه همه چیز رکوردهای جدول اول, در داخل گنجانده نشده است

اتصال درست

اما بیایید دوباره به پیوند درونی برگردیم:

توجه داشته باشید که نتیجه اتصال داخلی حاوی برف سفید نیست، زیرا هیچ مشتری وجود ندارد که رنگ مورد علاقه آنها سفید باشد.

بیایید پرس و جو را بازنویسی کنیم تا نتیجه شامل رکوردهایی از جدول دوم باشد که هیچ جفتی از جدول اول برای آنها یافت نشد (در این مورد، برف سفید):

این ارتباط نامیده می شود اتصال درست.

نتیجه پیوستن راستاین است: به علاوه همه چیز رکوردهای جدول دوم, در داخل گنجانده نشده استاتصال (که هیچ جفتی برای آن یافت نشد).

اتصال کامل

اما اگر نیاز داشته باشیم که نتیجه پرس و جو علاوه بر اتصال داخلی نیز اضافه شود، چه می شود آندریو برفهمزمان؟

برای انجام این کار، باید نتایج اتصال چپ و راست را با هم ترکیب کنید. این نوع اتصال قبلاً اختراع شده و نامیده می شود اتصال کامل:

نتیجه اتصال کاملنشان دهنده یک: همه رکوردها از اتصال داخلیبه علاوه تمام رکوردهای جدول اول که در جدول داخلی گنجانده نشده استاتصال (که هیچ جفتی برای آن یافت نشد) PLUS تمام رکوردهای جدول دوم که در جدول داخلی گنجانده نشده استاتصال (که هیچ جفتی برای آن یافت نشد).

نام مستعار جدول

موافقید که تمام سوالاتی که در این درس نوشتیم بسیار دست و پا گیر به نظر می رسند. این به این دلیل است که ما مجبوریم نشان دهیم نام های کاملزمینه هایی برای جلوگیری از ابهام

برای کوتاه کردن نام کامل جدول (به عنوان مثال، دایرکتوری. مشتریان) استفاده از نام مستعار (و همچنین برای خود فیلدها) مجاز است.

بیایید آخرین پرس و جو را بازنویسی کنیم تا در هنگام تولید نام فیلدهای کامل به جای دایرکتوری. مشتریانمی توانید از یک نام مستعار استفاده کنید به، و به جاش Directory.Associations- نام مستعار آ:

و برای واضح‌تر کردن نتیجه پرس و جو، اجازه دهید برای فیلدهایی که قبلاً در یکی از درس‌های قبلی به آن‌ها نگاه کردیم، نام مستعار اضافه کنیم:

رسیدگی به NULL

به نتایج آخرین پرسش (و همچنین بسیاری از موارد قبلی در این درس) دقیق تر نگاه کنید.

مقادیر فیلد چیست؟ اتحادیهو هررنگبرای خط اول؟ در مورد رشته ها چه می توانید بگویید؟ مشتریو رنگ آنبرای خط آخر؟

آنها برابر هستند خالی،همانطور که قبلاً می دانیم به معنای عدم وجود معنایی است:

و از خالیبه معنای عدم وجود یک مقدار است، سپس هر تلاشی برای انجام هر عملیاتی با آن (مقایسه، جمع...) باعث رفتار نامشخص پایگاه داده، یک خطای غیرقابل پیش بینی می شود.

از همین رو پردازش مقادیر اجباری در نظر گرفته می شود خالی هر زمان که ممکن است به وجود بیایند.

منظور ما از پردازش این است که باید در درخواست خود بگوییم که اگر یکی از فیلدها برابر باشد خالی، سپس مقدار دیگری باید در این فیلد جایگزین شود.

در این مورد، برای زمینه ها مشتریو اتحادیهدر صورت تشخیص خالیرشته خالی "" را جایگزین می کنیم.

و در اینجا زمینه ها وجود دارد رنگ آنو هررنگپیوندهایی به عناصر دایرکتوری هستند رنگ هابنابراین، فقط مقادیری که مرجع انواع مشخص شده هستند را می توان در آنها جایگزین کرد. هر نوع مرجع (مانند دایرکتوری یا سند) یک عنصر از پیش تعریف شده دارد EmptyLink. برای نشان دادن مقدار آن در درخواست، از تابع استفاده می کنیم معنی.

برای تعیین آنچه در این زمینه است خالیما از تابعی استفاده خواهیم کرد که قبلاً از درس های قبلی برای ما آشنا بود ISNULL:

SELECT ISNULL( K. Name, "" ) AS Client, ISNULL( K. FavoriteColor, VALUE (Directory. Colors. EmptyLink) ) AS ItsColor, ISNULL( A. Name, "" ) AS Association, ISNULL( A. Color, VALUE (دایرکتوری. رنگ ها. EmptyLink) ) AS HerColor از دایرکتوری است. مشتریان نحوه تکمیل دایرکتوری اتصال. انجمن ها AS A BY K. FavoriteColor = A. Color

در ظاهر (از کنسول پرس و جو) نتیجه تغییر نکرده است. ما هنوز هم میدان های خالی را می بینیم. اما این فقط به این دلیل است که نمایش های رشته ای دارند خالیو فیلدهای خالی از همه انواع یکسان و برابر با رشته خالی هستند.

در واقع این فیلدهای خالی دیگر وجود ندارند خالی(بدون ارزش) , اکنون آنها مقادیر (خالی) دارند که می توانید از قبل با آنها کار کنید (عملیات را انجام دهید).

به یاد داشته باشید، یک مقدار خالی و بدون ارزش دو چیز بسیار متفاوت هستند.

پیوستن به بیش از دو جدول

شما می توانید به صورت متوالی به هر تعداد جدولی که دوست دارید بپیوندید.

فرض کنید باید مشکل زیر را حل کنیم. شما در حال خواندن نسخه آزمایشی درس هستید، دروس کامل در دسترس است. خروجی همه گزینه های ممکنمشتریان و انجمن های مورد علاقه آنها و محصولات مورد علاقه آنها بر اساس رنگ مورد علاقه آنها.

برای انجام این کار، بیایید جدول را به ترتیب رنگ به هم وصل کنیم مشتریانبا میز انجمن هاو سپس (نتیجه حاصل) با جدول غذا:

امتحان بده

شروع تست

1. اتصالات استفاده می شود به

حالا بیایید نگاه دقیق تری بیندازیم ترکیبجداول

اجازه دهید به شما یادآوری کنم که می تواند چندین نوع اتصال در زبان پرس و جو 1C8 وجود داشته باشد، یعنی: اتصال چپ, راست بپیوندید, پیوستن داخلی, اتصال کامل. بیایید به هر یک از آنها با جزئیات نگاه کنیم.

  • اتصال چپ

    در مورد اتصال چپ، داده‌های یک جدول به طور کامل انتخاب می‌شوند و از جدولی که در سمت راست به هم متصل شده‌اند، تنها رکوردهایی انتخاب می‌شوند که برای آنها یک یا چند شرط وجود دارد که این جداول به هم متصل می‌شوند. البته از این جمله چیز کمی می توان فهمید، پس بیایید به یک مثال نگاه کنیم.
    یک جدول "محصولات" وجود دارد:

    بیایید این جدول را در کنسول پرس و جو 1C با استفاده از پرس و جو زیر ایجاد کنیم:

    انتخاب "001" به عنوان کد محصول، "سیب" به عنوان نام COMBINE ALL SELECT "002"، "Paranges" COMBINE ALL SELECT "003"، "Tangerines"

    همچنین یک جدول "کشورها" وجود دارد که به شکل زیر است:

    کد محصول یک کشور
    001 روسیه
    002 ترکیه
    003 مراکش

    همچنین آن را با پرس و جو زیر می سازیم:

    SELECT "001" به عنوان کد محصول، "Russia" AS Country COMBINE ALL SELECT "002"، "Turkey" COMBINE ALL SELECT "003"، "Morocco"

    حالا بیایید این دو جدول را با استفاده از یک اتصال سمت چپ به هم وصل کنیم تا یکی از آنها حاوی کد محصول، نام و کشور باشد. برای انجام این کار، جداول خود را در جدول‌های موقت قرار می‌دهیم و در یک پرس و جو دسته‌ای یک اتصال چپ انجام می‌دهیم.

    ما رکوردها را البته بر اساس فیلدها پیوند خواهیم داد کد محصول

    SELECT "001" AS کد محصول، "Apples" AS PLACE VT_Product COMBINE ALL SELECT "002", "Oranges" COMBINE ALL SELECT "003", "Tangerines" ; ////////////////////////////////////////////////// ////////////////////////// انتخاب "001" به عنوان کد محصول، "Russia" به عنوان کشور PLACE VT_Country COMBINE ALL SELECT "002" , " Turkey" COMBINE ALL SELECT "003", "Morocco" ; ////////////////////////////////////////////////// ///////////////////////// انتخاب VT_Product.Product Code, VT_Product.Name, VT_Country.Country FROM VT_Product AS VT_Product LEFT CONNECTION VT_CountryProduct Software VT_Country AS VT_Country .کد محصول = VT_Country.کد محصول

    می توانید این کد را در کنسول پرس و جو کپی کنید و آن را اجرا کنید و این نتیجه را دریافت کنید:

    در اینجا ما به وضعیت ایده آل نگاه کردیم که در آن هر ورودی در جدول سمت چپ با یک ورودی در سمت راست مطابقت دارد. بیایید آن را کمی پیچیده تر کنیم.

    فرض کنید قیمت های بیشتری برای محصول خود داریم. علاوه بر این، بسته به تاریخ ممکن است تغییر کنند:

    کد محصول تاریخ قیمت
    001 01.01.2016 120
    001 01.02.2016 150
    002 01.01.2016 200
    004 01.01.2016 350

    در اینجا می بینیم که برای کد محصول 001 (سیب) 2 ورودی در جدول قیمت داریم. قیمت نارنگی وجود ندارد. و علاوه بر این قیمت ها دارای کد کالا 004 می باشد که در جدول محصولات موجود نمی باشد. بیایید یک پیوست سمت چپ برای محصولات و قیمت ها با یک شرط اتصال در قسمت کد انجام دهیم و ببینیم چه چیزی دریافت می کنیم.

    SELECT "001" AS کد محصول، "Apples" AS PLACE VT_Product COMBINE ALL SELECT "002", "Oranges" COMBINE ALL SELECT "003", "Tangerines" ; ////////////////////////////////////////////////// ///////////////////////// انتخاب "001" به عنوان کد محصول، "01/01/2016" به عنوان تاریخ، 120 عنوان قیمت محل TU_Price COMBINE ALL SELECT "001", "02/01/2016", 150 COMBINE ALL SELECT "002", "01/01/2016", 200 COMBINE ALL SELECT "004", "01/01/2016", 350 ; ////////////////////////////////////////////////// ////////////////////////// انتخاب VT_Product.Product Code, VT_Product.Name, VT_Price.Price, VT_Price.Date FROM VT_Product AS VT_Product LEFT CONNECTION VT_Price AS VT_Price BY VT_Product. کد محصول = VT_Price. کد محصول

    پس از اجرای درخواست، این تصویر را مشاهده می کنیم:

    بیایید نتیجه را تجزیه و تحلیل کنیم. همه رکوردها از جدول "محصولات" انتخاب شدند زیرا اصلی ماست برای نارنگی، قیمت NULL است، زیرا ورودی با کد 003 در جدول قیمت نیست. و ورودی با کد 004 از جدول قیمت (و برای ما کمکی است) نادیده گرفته شد، زیرا هیچ منطبقی برای آن در جدول محصول وجود ندارد. و همانطور که می بینیم، با وجود اینکه در جدول محصول تنها یک رکورد با کد 001 وجود دارد، 2 رکورد با سیب داریم. این جایی است که برخی از موذیانه بودن میزها نهفته است.

    و هم مبتدیان و هم برنامه نویسان با تجربه در این چنگک قرار می گیرند. زمانی که یک رکورد در جدول اصلی وجود داشته باشد و چندین رکورد در جدول پیوسته شرط اتصال را برآورده کند، تعداد رکوردهای جدول نهایی برابر با تعداد رکوردهای جدول کمکی خواهد بود. در مورد ما، رکورد با سیب تکراری بود. این نکته باید هنگام نوشتن پرس و جو در نظر گرفته شود و در هنگام تست بررسی شود.

  • راست بپیوندید

    عملا هیچ تفاوتی با سمت چپ ندارد. جدول نهایی شامل تمام رکوردهای جدول سمت راست و از جدول سمت چپ فقط مواردی است که شرط اتصال برای آنها برآورده شده است. در عمل، اتصال درست عملاً مورد استفاده قرار نمی گیرد و ما آن را جداگانه در نظر نخواهیم گرفت. حتی یک لحظه خنده دار کوچک مربوط به پیوستن صحیح در طراح پرس و جو 1C وجود دارد. اگر سعی کنید هنگام نوشتن یک پرس و جو در طراح از یک پیوست سمت راست استفاده کنید، پس از کلیک بر روی OK، پیوست سمت راست به طور خودکار به یک پیوست سمت چپ تبدیل می شود.

  • پیوستن داخلی

    در مورد اتصال داخلی، فقط آن دسته از رکوردهایی از هر دو جدول چپ و راست که شرط اتصال برای آنها برقرار است در جدول نهایی ظاهر می شوند. اگر در آخرین درخواست خود خط را جایگزین کنیم

    اتصال چپ VT_قیمت AS VT_Price

    اتصال داخلی VT_Price AS VT_Price

    سپس در پایان دریافت می کنیم:

    یعنی ورود ما با نارنگی از بین رفته چون ... هیچ منطبقی برای آن در جدول قیمت وجود نداشت.

  • اتصال کامل

    در مورد پیوستن کامل، جدول به دست آمده شامل تمام رکوردهای هر دو جدول خواهد بود.
    در مورد ما، هنگام استفاده از رشته اتصال

    FULL CONNECTION BT_Price AS BT_Price

    نتیجه زیر را می گیریم

    در عمل، اتصال کامل به ندرت استفاده می شود، اما گاهی اوقات لازم است.

برای کسانی که به تازگی شروع به کار با درخواست های 1C8 کرده اند، به شما توصیه می کنم هر دو را در برگه "اتصالات" مشاهده کنید.

زبان پرس و جو یکی از مکانیسم های اساسی 1C 8.3 برای توسعه دهندگان است. با استفاده از پرس و جو، می توانید به سرعت هر داده ذخیره شده در پایگاه داده را بازیابی کنید. سینتکس آن بسیار شبیه به SQL است، اما تفاوت هایی نیز دارد.

مزایای اصلی زبان پرس و جو 1C 8.3 (8.2) نسبت به SQL:

  • عدم ارجاع فیلدهای مرجع (ارجاع یک یا چند نقطه به جزئیات شی).
  • کار با نتایج بسیار راحت است.
  • امکان ایجاد جداول مجازی؛
  • درخواست را می توان به دو زبان انگلیسی و روسی نوشت.
  • توانایی مسدود کردن داده ها برای جلوگیری از بن بست.

معایب زبان پرس و جو در 1C:

  • برخلاف SQL، در پرس و جوهای 1C اجازه تغییر داده ها را نمی دهند.
  • عدم وجود رویه های ذخیره شده؛
  • عدم امکان تبدیل رشته به عدد

بیایید نگاهی به آموزش کوچک خود در مورد ساختارهای اساسی زبان پرس و جو 1C بیندازیم.

با توجه به این واقعیت که پرس و جوها در 1C فقط به شما امکان دریافت داده را می دهند، هر پرس و جو باید با کلمه "SELECT" شروع شود. پس از این دستور، فیلدهایی که باید داده ها را از آنها به دست آورد، نشان داده می شود. اگر "*" را مشخص کنید، تمام فیلدهای موجود انتخاب می شوند. مکانی که داده ها از آن انتخاب می شوند (اسناد، رجیسترها، دایرکتوری ها و غیره) بعد از کلمه "FROM" مشخص شده است.

در مثالی که در زیر مورد بحث قرار گرفته است، نام کل نام‌گذاری از فهرست نام‌گذاری انتخاب شده است. بعد از کلمه "HOW"، نام مستعار (نام) برای جداول و فیلدها نشان داده شده است.

انتخاب کنید
نام AS نام نامگذاری
از جانب
Directory.Nomenclature AS Nomenclature

در کنار دستور "SELECT" می توانید کلمات کلیدی را مشخص کنید:

  • مختلف. پرس و جو فقط ردیف هایی را انتخاب می کند که حداقل در یک فیلد متفاوت باشند (بدون تکرار).
  • FIRST n، جایی که n– تعداد ردیف هایی از ابتدای نتیجه که باید انتخاب شوند. اغلب، این ساختار همراه با مرتب سازی (ORDER BY) استفاده می شود. به عنوان مثال، زمانی که باید تعداد مشخصی از اسناد را انتخاب کنید که بر اساس تاریخ جدید هستند.
  • مجاز. این طرح به شما امکان می دهد از پایگاه داده تنها آن دسته از رکوردهایی را انتخاب کنید که در دسترس کاربر فعلی هستند. بر اساس استفاده از این کلمه کلیدی، کاربر هنگام تلاش برای پرس و جو از رکوردهایی که به آنها دسترسی ندارد، یک پیام خطا دریافت می کند.

این کلمات کلیدی را می توان با هم یا جداگانه استفاده کرد.

برای تغییر

این پیشنهاد داده ها را برای جلوگیری از درگیری های متقابل مسدود می کند. تا زمانی که تراکنش به پایان برسد، داده های قفل شده از اتصال دیگری خوانده نمی شوند. در این بند می توانید جداول خاصی را که باید قفل شوند را مشخص کنید. که در در غیر این صورتهمه مسدود خواهند شد طراحی فقط برای حالت قفل خودکار مرتبط است.

بیشتر اوقات، بند "FOR CHANGE" هنگام دریافت موجودی استفاده می شود. از این گذشته، وقتی چندین کاربر به طور همزمان در برنامه کار می کنند، در حالی که یکی موجودی ها را دریافت می کند، دیگری می تواند آنها را تغییر دهد. در این صورت، باقیمانده حاصل دیگر درست نخواهد بود. اگر داده ها را با این پیشنهاد مسدود کنید، تا زمانی که کارمند اول تراز صحیح را دریافت کند و تمام دستکاری های لازم را با آن انجام دهد، کارمند دوم مجبور می شود منتظر بماند.

انتخاب کنید
تسویه حساب های متقابل. کارمند،
تسویه حساب های متقابل میزان تسویه حساب های متقابل مانده
از جانب
ثبت انباشت تسویه حساب متقابل با کارکنان موجودی AS تسویه حساب متقابل
برای تغییر

جایی که

طراحی برای تحمیل نوعی انتخاب بر روی داده های بارگذاری شده ضروری است. در برخی از موارد به دست آوردن داده از رجیسترها، تعیین شرایط انتخاب در پارامترهای جداول مجازی معقولتر است. هنگام استفاده از "WHERE"، ابتدا همه رکوردها بازیابی می شوند و تنها پس از آن انتخاب اعمال می شود که به طور قابل توجهی سرعت پرس و جو را کند می کند.

در زیر نمونه ای از درخواست برای به دست آوردن افراد تماس برای یک موقعیت خاص است. پارامتر انتخاب دارای فرمت است: &ParameterName (نام پارامتر دلخواه است).

انتخاب (مورد)

طراحی به شما امکان می دهد شرایط را مستقیماً در بدنه درخواست مشخص کنید.

در مثال زیر، "AdditionalField" بسته به اینکه سند پست شده باشد یا نه حاوی متن خواهد بود:

انتخاب کنید
AdmissionT&U.Link،
انتخاب
WHEN AdmissionT&U.Performed
سپس "سند تصویب شد!"
در غیر این صورت "سند ارسال نشد..."
END AS AdditionalField
از جانب
سند دریافت کالا و خدمات نحوه دریافت T&C

پیوستن

Joins دو جدول را بر اساس یک شرط رابطه خاص پیوند می دهد.

اتصال چپ/راست

ماهیت اتصال LEFT این است که اولین جدول مشخص شده به طور کامل گرفته می شود و جدول دوم با توجه به شرایط اتصال به آن مرتبط می شود. اگر هیچ رکوردی مطابق با اولین جدول در جدول دوم وجود نداشته باشد، NULL به عنوان مقادیر آنها جایگزین می شود. به بیان ساده، جدول اصلی اولین جدول مشخص شده است و داده های جدول دوم (در صورت وجود) قبلاً جایگزین داده های آن شده است.

به عنوان مثال، لازم است اقلام را از اسناد "دریافت کالا و خدمات" و قیمت ها را از ثبت اطلاعات "قیمت اقلام" دریافت کنید. در این صورت، اگر قیمت هر موقعیتی پیدا نشد، به جای آن، NULL را جایگزین کنید. همه موارد از سند بدون در نظر گرفتن اینکه قیمت دارند یا نه انتخاب می شوند.

انتخاب کنید
رسید و نامگذاری U.
قیمت ها.قیمت
از جانب
سند.دریافت کالا و خدمات.کالا نحوه دریافت و مشخصات
INTERNAL JOIN RegisterInformation.PricesNomenclature.SliceLast AS Prices
نرم افزار Receipt&U.Nomenclature = Prices.Nomenclature

در سمت راست همه چیز دقیقا برعکس است.

اتصال کامل

تفاوت این نوع اتصال با موارد قبلی در این است که در نتیجه تمام رکوردهای جدول اول و دوم بازگردانده می شوند. اگر هیچ رکوردی در جدول اول یا دوم بر اساس شرط پیوند مشخص شده یافت نشد، به جای آن، NULL برگردانده می شود.

هنگام استفاده از اتصال کامل در مثال قبلی، همه موارد از سند "دریافت کالا و خدمات" و تمام آخرین قیمت ها از ثبت "قیمت اقلام" انتخاب می شوند. مقادیر رکوردهای یافت نشده در هر دو جدول اول و دوم برابر با NULL خواهد بود.

پیوستن داخلی

تفاوت بین JOIN داخلی و FULL JOIN در این است که اگر رکوردی حداقل در یکی از جداول یافت نشود، کوئری به هیچ وجه آن را نمایش نخواهد داد. در نتیجه، تنها مواردی از سند "دریافت کالا و خدمات" انتخاب می شوند که برای آنها سوابقی در ثبت اطلاعات "قیمت کالا" وجود دارد، اگر در مثال قبلی "FULL" را با "INTERNAL" جایگزین کنیم.

دسته بندی بر اساس

گروه‌بندی در جستارهای 1C به شما امکان می‌دهد ردیف‌های جدول (فیلدهای گروه‌بندی) را طبق یک خاص جمع کنید. ویژگی مشترک(فیلدهای گروه بندی شده). فیلدهای گروه بندی را فقط می توان با استفاده از توابع جمع نمایش داد.

نتیجه پرس و جو زیر لیستی از انواع محصولات با حداکثر قیمت برای آنها خواهد بود.

انتخاب کنید
,
MAX (Price.Price) به عنوان قیمت
از جانب

دسته بندی بر اساس
قیمتها.نامگذاری.نوع نامگذاری

نتایج

برخلاف گروه بندی، هنگام استفاده از مجموع، تمام رکوردها نمایش داده می شوند و کل ردیف ها به آنها اضافه می شود. گروه بندی فقط رکوردهای تعمیم یافته را نمایش می دهد.

نتایج را می توان برای کل جدول (با استفاده از کلمه کلیدی "GENERAL")، برای چندین فیلد، برای فیلدهایی با ساختار سلسله مراتبی (کلمات کلیدی "HIERARCHY"، "ONLY HIERARCHY") خلاصه کرد. هنگام خلاصه کردن نتایج، استفاده از توابع جمع ضروری نیست.

بیایید با استفاده از گروه بندی به مثالی مشابه مثال بالا نگاه کنیم. در این حالت، نتیجه پرس و جو نه تنها فیلدهای گروه بندی شده، بلکه سوابق دقیق را نیز برمی گرداند.

انتخاب کنید
قیمتها.نامگذاری.نوع نامگذاری AS نوع نامگذاری،
Prices.Price AS Price
از جانب
ثبت اطلاعات قیمت های نامگذاری تصویری از آخرین قیمت های AS
نتایج
MAXIMUM (قیمت)
توسط
نوع نامگذاری

داشتن

این عملگر مشابه عملگر WHERE است، اما فقط برای توابع جمع استفاده می شود. فیلدهای باقی مانده، به جز مواردی که توسط این اپراتور استفاده می شود، باید گروه بندی شوند. عملگر WHERE برای توابع جمع قابل اجرا نیست.

در مثال زیر، حداکثر قیمت‌های یک کالا در صورتی انتخاب می‌شوند که از 1000 بیشتر باشد، گروه‌بندی شده بر اساس نوع کالا.

انتخاب کنید

MAX (Price.Price) به عنوان قیمت
از جانب
ثبت اطلاعات قیمت های نامگذاری تصویری از آخرین قیمت های AS
دسته بندی بر اساس
قیمتها.نامگذاری.نوع نامگذاری
داشتن
MAXIMUM (قیمتها. قیمت) > 1000

مرتب سازی بر اساس

عملگر ORDER BY نتیجه یک پرس و جو را مرتب می کند. برای اطمینان از اینکه رکوردها به ترتیب ثابت نمایش داده می شوند، از AUTO ORDER استفاده می شود. انواع اولیه طبق قوانین معمول مرتب شده اند. انواع مرجع بر اساس GUID مرتب شده اند.

نمونه ای از مرتب کردن لیستی از کارمندان بر اساس نام:

انتخاب کنید
Employees.Name AS نام
از جانب
Directory.Employees چگونه کارمندان
مرتب سازی بر اساس
نام
سفارش خودکار

سایر ساختارهای زبان پرس و جو 1C

  • ترکیب کنید- نتایج دو پرس و جو در یک.
  • همه چیز را با هم ترکیب کنید- شبیه به COMBINE، اما بدون گروه بندی ردیف های یکسان.
  • میز خالی- گاهی اوقات هنگام پیوستن به پرس و جوها برای تعیین یک جدول تودرتو خالی استفاده می شود.
  • محل- یک جدول موقت برای بهینه سازی پرس و جوهای پیچیده 1C ایجاد می کند. به این گونه درخواست ها، درخواست های دسته ای می گویند.

ویژگی های زبان پرس و جو

  • SUBSTRINGیک رشته را از یک موقعیت مشخص به تعداد مشخصی کاراکتر کوتاه می کند.
  • سال...دومبه شما امکان می دهد مقدار انتخابی یک نوع عددی را بدست آورید. پارامتر ورودی تاریخ است.
  • شروع دوره و پایان دورههنگام کار با خرما استفاده می شود. نوع دوره (DAY، MONTH، YEAR، و غیره) به عنوان یک پارامتر اضافی نشان داده شده است.
  • ADDKDATEبه شما امکان می دهد زمان مشخصی از یک نوع خاص را از یک تاریخ اضافه یا کم کنید (SECOND، MINUTE، DAY، و غیره).
  • تفاوتتفاوت بین دو تاریخ را تعیین می کند و نوع مقدار خروجی را نشان می دهد (DAY، YEAR، MONTH، و غیره).
  • ISNULLمقدار از دست رفته را با عبارت مشخص شده جایگزین می کند.
  • پیوندهای نمایندگی و نمایندگییک نمایش رشته ای از فیلد مشخص شده دریافت کنید. به ترتیب برای هر مقدار و فقط مقادیر مرجع اعمال شود.
  • TYPE، TYPE VALUESبرای تعیین نوع پارامتر ورودی استفاده می شود.
  • ارتباط دادنیک عملگر مقایسه منطقی برای نوع مقدار ویژگی است.
  • بیانبرای تبدیل یک مقدار به نوع مورد نظر استفاده می شود.
  • زمان قرارمقداری از نوع "تاریخ" را از مقادیر عددی (سال، ماه، روز، ساعت، دقیقه، ثانیه) دریافت می کند.
  • معنیدر یک درخواست 1C برای نشان دادن مقادیر از پیش تعریف شده - دایرکتوری ها، شمارش ها، طرح هایی برای انواع ویژگی ها استفاده می شود. مثال استفاده: " جایی که شخص حقوقی = ارزش (شمارش. فرد حقوقی. فردی)«.

Query Builder

برای ایجاد پرس و جو با 1C یک مکانیسم داخلی بسیار راحت وجود دارد - طراح پرس و جو. این شامل برگه های اصلی زیر است:

  • "جدول و فیلدها" - شامل فیلدهایی است که باید انتخاب شوند و منابع آنها.
  • "اتصالات" - شرایط ساختار CONNECTION را توصیف می کند.
  • "گروه بندی" - شامل توصیفی از ساختارهای گروه بندی و فیلدهای خلاصه شده بر اساس آنها است.
  • "شرایط" - مسئول انتخاب داده ها در درخواست است.
  • "اضافی" - گزینه های اضافیدرخواست، مانند کلمات کلیدی دستور "SELECT" و غیره.
  • "Joins/Aliases" - امکان پیوستن به جداول نشان داده شده و نام مستعار مشخص شده است (ساخت "HOW").
  • «Order» مسئول مرتب‌سازی نتایج پرس‌و‌جوها است.
  • "Totals" - شبیه به برگه "گروه بندی"، اما برای ساختار "TOTALS" استفاده می شود.

متن درخواست را می توان با کلیک بر روی دکمه "درخواست" در گوشه سمت چپ پایین مشاهده کرد. در این فرم می توان آن را به صورت دستی تصحیح یا کپی کرد.


درخواست کنسول

برای مشاهده سریع نتیجه یک پرس و جو در حالت Enterprise یا اشکال زدایی پرس و جوهای پیچیده، از استفاده کنید. این شامل متن درخواست است، پارامترها را تنظیم می کند و نتیجه را نمایش می دهد.

می توانید کنسول پرس و جو را روی دیسک ITS یا از طریق دانلود کنید.

Join یکی از رایج ترین عملیاتی است که بر روی پایگاه داده انجام می شود. اتصالات برای تطبیق سطرها از یک جدول به ردیف های دیگر استفاده می شود. مطابقت بر اساس مقدار یکی از فیلدها انجام می شود که آن را کلید می نامیم.

اساساً از اتصالات برای به دست آوردن اطلاعات از منابع مختلف در یک نمونه استفاده می شود. به عبارت دیگر، منابع زمانی به هم متصل می شوند که معنای فیزیکی آنها متفاوت باشد.

چهار نوع اتصال جدول وجود دارد که توسط موتور جستجوی 1C:Enterprises پردازش می شوند: داخلی، چپ بیرونی. راست خارجی، کامل خارجی (یا، ساده تر، داخلی، چپ، راست، کامل).

پیوستن داخلی

[INTERNAL] JOIN به این معنی است که از هر دو جدول منبع - منابع داده، تنها ترکیبی از رکوردهایی که شرایط مشخص شده را برآورده می کنند باید در نتیجه پرس و جو گنجانده شوند. رکوردهای باقیمانده در نتیجه گنجانده نمی شوند.کلید کلیدی INTERNAL را می توان به هیچ وجه حذف کرد؛ این باعث افزایش وضوح و خوانایی متن پرس و جو می شود.

ساده ترین نوع اتصال داخلی است. در این مورد، پرس و جو به سادگی جفت ردیف هایی را با یک مقدار کلید منطبق پیدا می کند (در این مثال، مانند همه موارد بعدی، فیلد «حساب» به عنوان فیلد کلید استفاده می شود).

اتصال چپ (راست).

LEFT [OUTER] Join به این معنی است که نتیجه پرس و جو باید شامل ترکیبی از رکوردهای هر دو جدول منبع باشد که شرایط مشخص شده را برآورده کنند. اما، بر خلاف یک پیوستن داخلی، نتیجه پرس و جو باید شامل رکوردهایی از منبع اول نیز باشد (که در سمت چپ کلمه JOIN مشخص شده است) که هیچ رکوردی از منبع دوم پیدا نشد که با شرایط مطابقت داشته باشد. به این ترتیب، نتیجه پرس و جو شامل تمام رکوردهای منبع اول می شود. در صورت رعایت شرایط مشخص شده، آنها با رکوردهای منبع دوم ادغام می شوند. خطوط نتیجه پرس و جو که هیچ رکوردی از منبع دوم پیدا نشد که با شرط مطابقت داشته باشد، در فیلدهای ایجاد شده بر اساس رکوردهای این منبع حاوی NULL خواهد بود.

وضعیت زمانی پیچیده تر می شود که منابع کاملاً مطابقت نداشته باشند. بنابراین، در یک جدول یک رکورد با یک مقدار کلید مشخص وجود دارد، اما در دیگری چنین رکوردی وجود ندارد. این نمودار وضعیتی را نشان می دهد که یک ورودی در جدول طرف مقابل است، اما در جدول فروش نیست. این بدان معناست که طرف مقابل خاصی از ما چیزی نخریده است، اگرچه ما آن را در فهرست طرفین داریم (مثلاً شخصی از او خواسته است که برای پرداخت فاکتور بنویسد، اما نظر خود را در مورد خرید تغییر داده است؛ یک وضعیت کاملاً واقعی. ). در این حالت، مقدار Null در انتخاب به جای رکورد از دست رفته ظاهر می شود.

جداول منبع:

اتصال کامل

RIGHT [OUTER] Join به این معنی است که نتیجه پرس و جو باید شامل ترکیبی از رکوردهای هر دو جدول منبع باشد که شرایط مشخصی را برآورده کنند. علاوه بر این، نتیجه پرس و جو باید شامل رکوردهایی از منبع دوم نیز باشد (که در سمت راست کلمه CONNECTION مشخص شده است) که هیچ رکورد مربوطه از منبع اول برای آنها یافت نشد. اگر شرط مشخص شده برآورده شود، آنها با رکوردهای منبع اول ادغام می شوند. خطوط نتیجه پرس و جو که هیچ رکوردی از منبع اول پیدا نشد که با شرط مطابقت داشته باشد، در فیلدهای ایجاد شده بر اساس رکوردهای این منبع حاوی NULL خواهد بود.

پیوستن کامل بیرونی، همانطور که از نام آن پیداست، توسعه بیشتر اتصال چپ (یا راست) است. هنگام سازماندهی یک پیوست کامل، مهم است که این شرایط را در نظر بگیرید: هنگام پیوستن به این نوع، تمام رکوردهای هر دو جدول در پرس و جو گنجانده می شوند. به عبارت دیگر، ما باید مقدار کلید صفر را از هر دو جدول چپ و راست بدست آوریم. لطفا توجه داشته باشید: باید از هر دو جدول باشد! یک راه حل این است: یک فیلد اضافی برای آن ایجاد کنید که در آن Null را بررسی کنید. اگر یک کلید در یکی از جداول Null است، باید مقدار آن را از جدول دیگری بگیرید.

از آنجایی که یک اتصال کامل تا حدودی پیچیده تر از سایر انواع اتصال است، بیایید مثال خود را کمی تغییر دهیم. اکنون ما باید نه فقط یک لیست دقیق از فروش، بلکه لیستی از تمام طرف های مقابل موجود را دریافت کنیم.

جداول منبع:

تدارکات
طرف مقابل مجموع
ایوانف 4000
آندریف 3500
حراجی
طرف مقابل مجموع
ایوانف 5000
پتروف 7500
سیدوروف 15000

جدول پس از پیوستن کامل، با تمام فیلدهای جداول اصلی:

طرف مقابل فعلی
خریدهای طرف مقابل مقدار خرید فروش طرف مقابل مقدار فروش
ایوانف 4000 ایوانف 5000
خالی خالی پتروف 7500
خالی خالی سیدوروف 15000
آندریف 3500 خالی خالی

نمای نهایی جدول که در آن طرفین در یک قسمت خلاصه می شوند:

طرف مقابل فعلی
طرف مقابل مقدار خرید مقدار فروش
ایوانف 4000 5000
پتروف 7500
سیدوروف 15000
آندریف 3500

در زیر یک گونه از درخواست مربوطه است. لطفاً توجه داشته باشید که ما داده‌های طرف مقابل را نه فقط از اسناد، بلکه از سؤالات فرعی به دست می‌آوریم. در آن‌ها، ما گروه‌بندی را بر اساس طرف‌های متقابل انجام می‌دهیم به گونه‌ای که هر طرف مقابل فقط یک بار در نمونه نشان داده شود. و البته، Null را فراموش نکنید:

SELECT ISNULL(Receipt.Counterparty.Expense.Counterparty) AS Counterparty, ISNULL(Receipt.Amount, 0) AS AmountPurchases, ECTБNULL(Pacxod.Amount, 0) AS AmountSales RepartupartyAS رسید.مقدار) AS Amount FROM Document. Receipt AS Receipt GROUP BY Receipt.Counterparty) AS Receipt FULL CONNECTION (انتخاب هزینه. طرف مقابل به عنوان طرف مقابل، AMOUNT(هزینه.مبلغ) AS Amount FROM ExpensepartyCounterEx. AS هزینه بر اساس رسید .Counterparty = Expense.Counterparty

انتخاب سردبیر
امروزه تصور یک کتابخانه مدرن بدون وسایل کمک بصری متمرکز بر نیازهای خواننده غیرممکن است. فرم های بصری ...

دالک ها دالک ها یک نژاد فرازمینی از جهش یافته ها از مجموعه تلویزیونی علمی تخیلی بریتانیایی دکتر هو هستند. در این سریال، دالک ها نماینده ...

«گاز خنده» اکسید نیتروژن (نیتروس اکساید) است. این مخلوطی از اکسیژن و اکسید نیتریک (N2O) است. فرمول آن در ...

این یک کار پیش پا افتاده نیست، به شما می گویم. :) به منظور تسهیل در یکسان سازی مواد، تعدادی از ساده سازی ها را معرفی کردم. کاملا هذیانی و ضد علمی اما...
بیش از 70 سال از حماسه قهرمانانه نجات چلیوسکینی ها می گذرد. زمان زیادی از انتشار شایعات در مورد مرگ تعداد زیادی از ...
با سلام خدمت خوانندگان عزیز دنیا ظالم است. همه افراد کم و بیش بالغی که قبلا با...
ما با کلیچکو مصاحبه کردیم، وقتی از او در مورد ترجیح ماشین او پرسیدند، بلافاصله پاسخ واضحی شنیدیم: "من ماشین های بزرگ را رانندگی می کنم، زیرا کوچک ها این کار را نمی کنند...
متأسفانه، نیاز به کمک مالی در میان جمعیت روسیه در حال تبدیل شدن به یک اتفاق مکرر است. بیشتر و بیشتر افراد خود را در ...
مردم مدتهاست بر این باور بودند که نحوه استقبال از یک روز جدید، نحوه گذراندن آن است. نماز صبح مؤثر به جذب...