شناختن شرط FROM
ساختار پایه ای از شرط FROM به آسانی نام از یک جدول یا نما ساده را فراهم می سازد. اما برای دسترسی پیدا کردن به توانایی از مدل ارتباطی، ما باید به بازیابی ستونها از جداول چندگانه و نماها در یک Query خاص قادر باشیم. شرط FROM یک مکانیزمی برای انجام آن با استفاده از ساختار دستور زیر:FROMON
اپراتور پیوند انواع پیوند برای به انجام رسیدن را تشریح می کند. Server SQL پیوندهای داخلی و خارجی همه نوسانات را پشتیبانی می کند، همان طوری که در بخش بعدی خواهیم دید. شرایط پیوند یک تعبیری می باشد شبیه به ملاک که در شرط WHERE استفاده شده است. آن مشخص می کند که چگونه سطرها در دو جدول ارتباط خواهند یافت. بیشتر پردازشگرهای ربطی روی پایه ای از عبارتهای برابری مانند B ستون = A ستون به انجام می رسند. اما SQL Server هر اپراتور منطقی را پشتیبانی کرده و شرایط پیوند می تواند به طور دلخواه پیچیده باشد، با عبارات چندگانه پیوند یافته که از حرف ربط AND یا OR از همان راهی که یک شرط WHERE می تواند ملاک انتخابی چندگانه را شامل باشد استفاده کند. عبارت پیوند می تواند برای اضافه کردن جداول و نماهای اضافی برای Query تکرار شود. ساختار دستور برای پیوند جداول چندگانه عبارت است از: FROM
ON
یک حدود فرضی ۲۵۶ جدولی برای هر Query وجود دارد، اما آن به حد زیاد غیر محتمل است که شما اصلاً نیاز به ۵ یا ۶ نیاز ندارید و ۲ یا ۳ بیشتر معمول می باشد. در حقیقت اگر شما نیاز به اتصال بیش از ۱۰ جدول در یک Query باشید، شما باید به دقت طرح پایگاه داده آن را نگاه کرده برای اینکه مطمئن شوید که آن به طور صحیح به حالت عادی در آمده است.
ایجاد کردن پیوندها
پیوندها می توانند در Query Designer با استفاده هر کدام از قاب Grid یا قاب SQL ایجاد گردند. قاب Grid اغلب آسانتر می باشد اگر شما جداولی که رسماً در طرح پایگاه داده مربوط شده اند پیوند دهید، از موقعی که Query Designer پیوندی بین آنها به طور خودکار ایجاد خواهد کرد. اما به طور معمول قاب SQL با انعطاف پذیری بیشتر برای شما فراهم می گردد.
نامگذاری شئی ها
زمانی که شما با یک جدول یا نمای تکی کار می کنید آنجا می تواند هیچ ابهامی در حدود منابع از یک ستون نداشته باشد از موقعی که همه نام ستونها در یک جدول باید منحصر به فرد باشند. هنگامی که شما برای بار اول کار کردن با چندین جدول در یک Query را شروع می کنید یا شما باید برای مشخص کردن نام ستونها صریحاً مواظب باشید. مشخصات کامل برای هر شئی پایگاه داده چهار معرفه را در بردارد. نام سرور، نام پایگاه داده، نام صاحب، نام شئی. معرفه ها به وسیله پریودها جداسازی می گردند. بنابراین نام واجد شرایط از جدول Oils در سیستم من Bunny.Aromatherary.dbo.Oil می باشد. مقداری از شئی ها مانند نماها و جداول شامل شئی های دیگر می باشد. برای رجوع به یکی از این شئی های گنجانده شده (در این حالت، ستونها). شما به آسانی نام آن را به نام شئی ضمیمه می کنید. نام واجد شرایط کامل از ستون OilID از جدول Oils (Bunny.Aromatherapy.dbo.Oils.Oil ID) می باشد. خوشبختانه شما فقط نیاز به مشخص کردن کافی از درجه بندی ابهام اجتناب پذیر دارید.
در یک Query مبنی بر یک جدول تکی، برای مثال نام ستون به وسیله خودش دارای مشخصات کافی می باشد. اگر یک Query به بیش از یک جدول مربوط گردد، اگر چه جداول دارای ستونهایی با یک نام باشد. شما باید نام جدول را در نام شئی (Object) Oils.OilID , OilPropertise.OilID که تمایز را به طور کامل روشن می سازد لحاظ کنید.
پیوندهای داخلی
بیشترین فرمهای رایج پیوند یک پیوند داخلی می باشد. یک پیوند داخلی فقط آن سطرهایی که شرایط پیوند TRUE را باز می گرداند باز خواهد گرداند.
پیوند دو جدول با استفاده از قاب دیاگرام
- Query Designer جدول Oils را به وسیله کلیک راست کردن نام آن در قاب Details باز کرده روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
- قاب دیاگرام را به وسیله کلیک کردن دکمه قاب دیاگرام روی نوار ابزار Query Designer نشان می دهیم.
- دکمه Add Table را روی نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.
- جدول PlantTypes را در لیست جدول انتخاب کرده و Add را کلیک می کنیم. SQL Server جدول را به Query اضافه می کند.
- Close را برای بستن کادر محاوره ای Add Table کلیک می کنیم.
- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. Query Designer قاب SQL را نشان می دهد.
- علامت * را بعد از کلید واژه SELECT حذف می کنیم.
- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. (OK را کلیک کرده اگر Query Designer یک متن خطا درباره ساختار دستور SELECT نشان دهد). Query Designer قاب SQL را پنهان می سازد.
مهم : زمانی که شما Query Designer را باز می کنید، حالت SQL معمولاً * را انتخاب می کند. انتخاب کردن ستونهای مشخص در قاب دیاگرام سبب می شود که آنها به لیست ستون اضافه شوند. مایکروسافت آن را به صورت یک خصیصه در نظر می گیرد.
- در قاب دیاگرام ستونهای OilID و OilName را در جدول Oils و ستون PlantType را در جدول PlantType انتخاب می کنیم.
- دکمه Run روی نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer مقادیر Planttype را برای هر Oil نشان می دهد.
ارتباط دو جدول به وسیله قاب SQL
- قاب دیاگرام را پنهان کرده و قاب SQL را به وسیله کلیک کردن دکمه ها روی نوار ابزار Query Designer نشان می دهیم.
- حالت SQL موجود را با عبارت زیر جایگزین می کنیم.
SELECT Oils.OilID,Oils.Oil Name,PlantParts.PlantPart FROM OilsINNER Join PlantParts ON Oils.PlantPartID=PlantParts.PlantPart ID
- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer مقادیرها برای هر سطر Oils Plant Part را نشان می دهد.
ارتباط جداول چندگانه با استفاده از قاب دیاگرام
- قاب SQL را پنهان کرده و قاب دیاگرام را نمایش می دهیم.
- دکمه Add Table را روی نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.
- جدول Planttypes را در لیست جداول انتخاب می کنیم. Add را کلیک کرده SQL Server جدول را به Query اضافه می کند.
- Close را برای بستن کادر محاوره ای Add Table کلیک می کنیم.
- در قاب دیاگرام ستون Planttype را در جدول Planttypes برای اضافه کردن ستون به Query کلیک می کنیم.
- دکمه Run در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer هر دوی ستونهای PlantPart و Planttype را برای هر Oil نشان می دهد.
ارتباط جداول چندگانه با استفاده از قاب SQL
- قاب دیاگرام را پنهان کرده و قاب SQL را نشان می دهیم.
- عبارت SELECT موجود را با عبارت زیر جایگزین می کنیم.
SELECT Oils.Oil ID.Oils.Oil Name.odors.odor FROM Oils INNER Join Oilodors on Oils.OilID=Oil odors.OilID INNER Join odors on Oilodors.odor ID=odors.odorID
- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم.
- پنجره Query Designer را می بندیم.
ارتباطات خارجی
بعضی مواقع شما می خواهید که یک Query همه سطرها یک یا چندین جدول را باز گرداند، خواه آنها سطرهای ارتباطی در جداول دیگر داشته باشند و یا خیر. که با استفاده از یک ارتباط خارجی به انجام رسیده که می تواند سه گونه باشد: چپ، راست و کامل. یک ارتباط خارجی همه سطرهایی از جدول چپ در شرط JOIN و فقط آن سطرهایی از جدول راست برای اینکه شرایط ارتباط TRUE می باشد را باز خواهد گرداند.
دستور ساختار برای یک ارتباط خارجی عبارت است از:
FROM Left Table Left Outer Join Right able on
برای مثال عبارت SELECT زیر، همه سطرها در جدول Oils را باز می گرداند و مقادیر PlantPart از جدول آنجایی که PlantPart مشخص شده جفت می شود. آنجا سطرهای ارتباطی در جدول Plant Parts وجود ندارد و Query ، Null را به عنوان مقدار PlantPart برای آن سطر باز می گرداند.
SELECT Oils.Oil Name.Plant Parts.Plant Part FROM Oils Left Outer Join Plant Parts on Oils.Plant Part ID=Plant Parts.Plant Part ID
یک ارتباط خارجی سمت راست مقابل یک ارتباط خارجی سمت چپ می باشد. آن همه سطرها از جدول راست در شرط JOIN را باز می گرداند و مقادیر ارتباطی را از جدول چپ ارتباط می دهد. نظر به اینکه یک ارتباط کاملاً خارجی همه سطرها از دو جدول را با هم هماهنگ می سازد آنجایی که امکان پذیر باشد.
ایجاد کردن یک ارتباط خارجی چپ با استفاده از قاب دیاگرام
- Query Designer را برای جدول Oils به وسیله کلیک راست کردن نام جدول در قاب Details باز کرده، روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
- قاب دیاگرام را نشان می دهیم.
- دکمه Add Table را در نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.
- Cautions و Oil Cautions در لیست جدول را انتخاب و سپس Add را کلیک می کنیم. Query Designer جدولی برای Query اضافه می کند.
راهنمایی : شما می توانید یک ارتباط خارجی چپ با دو جدول ایجاد کنید. ما حالت سوم را در ایجاد استفاده می کنیم با جدول OilCautions که به عنوان یک جدول الحاقی عمل می کند که ارتباط چندگانه بین Oils و Cautions را حل می کند.
Close را برای بستن کادر محاوره ای کلیک می کنیم.
راهنمایی : شما می توانید جداول را در قاب دیاگرام برای پاک کردن نمایشگر درج کنید.
- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. Query Designer قاب SQL را نشان می دهد.
- علامت * را در کلید واژه SELECT حذف می کنیم.
- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. (OK را کلیک کرده اگر Query Designer یک متن خطا درباره ساختار از عبارت SELECT نشان دهد) Query Designer قاب SQL را پنهان می سازد.
مهم: زمانی که شما Query Designer را باز می کنید عبارت SQL پیش فرض معمولاً * را انتخاب می کند. ستون ویژه که در قاب دیاگرام انتخاب شده سبب می شود که آنها برای لیست ستون اضافه شوند. مایکروسافت این را به عنوان یک ویژگی در نظر می گیرد.
- در قاب دیاگرام، ستونها از OilName و OilID را از جدول Oils و ستون Caution را از جدول Cautions برای خروجی انتخاب می کنیم.
- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer فقط آن Oils که Cautions دارد را نشان می دهد.
- خط ارتباطی بین جداول Oil Cautions و Oils را به وسیله کلیک کردن آن انتخاب می کنیم و سپس دکمه Properties را در نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Join Properties را نشان می دهد.
All Rows From Oils را انتخاب می کنیم.
راهنمایی: همه سطرها از Oil Cautions یک ارتباطی خارجی سمت راست ایجاد خواهد کرد و هر دوی گزینه ها را انتخاب کرده که یک ارتباط کامل خارجی ایجاد می کند.
- Close را برای بستن کادر محاوره ای کلیک می کنیم. Query Designer خط ارتباطی را برای انعکاس مشخصات ارتباطی جدید تغییر می دهد.
- دکمه Run در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer همه سطرها در جدول Oils را نشان می دهد و مقادیر از جدول Cautions را ارتباط می دهد.
ایجاد یک ارتباط خارجی سمت راست با استفاده از قاب SQL
- قاب دیاگرام را پنهان کرده و قاب SQL را در Query Designer نشان می دهیم.
- حالت SELECT موجود را با عبارت زیر جایگزین می کنیم.
SELECT Oils.Oil Name.Properties.Property FROM Oils Right OUTER JOIN Oil Properties on Oils.Oil ID=Oil Properties.Oil ID INNER JOIN Properties on Oil Properties.Property ID=Properties.Property ID
- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer شامل همه سطرها از جدول Oil Properties با مقادیر ارتباطی از جدول Oils می باشد.
- پنجره Query Designer را می بندیم.
UNIONS
آخرین نوع از ارتباط به صورت Union شناخته می گردد. یک Union نتایجی از دو عبارت SELECT متمایز را در داخل یک تنظیم از سطرها ترکیب می کند. ارتباطات داخلی و خارجی ستونهایی از دو جدول درگیر شده در یک سطر تکی را با هم ترکیب می کند یک Union سطرهایی از دو جدول در یک ستون تکی را به هم ترکیب می کند. شما می توانید تصور کنید که تنظیمات دو سطر را گرفته و یکی را در بالای دیگری باز گردانید. اگر چه قاعده اصلی از سطرها باز گردانده شده به وسیله شرط ORDER BY مشخص می گردد. ساختار دستور یک Union از پیوندها متفاوت می باشد. یک Union ساختار دستوری به صورت زیر دارد:
SELECT FROM UNION [All] SELECT FROM [ORDER BY ]
شما می توانید بسیاری از حالتهای UNION SELECT را همان طوری که شما برای یک Query دوست دارید اضافه کنید. (این موضوع برای ۲۵۶ جدول محدود می باشد) اما همه عبارتهای SELECT باید همان تعداد از ستونها را از انواع سازگار یا شبیه در همان دستور باز گرداند. اولین عبارت SELECT نامهای ستون را مشخص خواهد کرد و شرط ORDER BY از آخرین عبارت SELECT دستور Sort را تعیین خواهد کرد. به طور پیش فرض، SQL Server سطرهای چندگانه ای از نتایج را از یک Union Query برمی دارد. اگر شما Union All را مشخص کنید، ولی سطرهای چندگانه حفظ خواهد شد.
ایجاد کردن یک UNION
- Query Designer را به وسیله کلیک کردن جدول Properties در قاب Details باز کرده روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
- قاب SQL را نشان می دهیم.
- حالت SQL موجود را با عبارت زیر جایگزین می کنیم.
SELECT Property Table AS Table Name.Property ID AS ID Property AS Quality From Properties UNION SELECT odor Table.odor ID odor From odors ORDER BY Quality
- دکمه Run در نوار ابزار Query Designer را برای اجرای Query کلیک می کنیم. Query Designer نتایجی از دو عبارت SELECT را با هم ترکیب می کند.
با عرض سلام و خسته نباشد.
می خواستم بدونم برای ارتباط برقرار کردن دو جدول در php من باید چکار کنم؟؟
مثلا برای ثبت نام قسمت مربوط به زبان ها یک جدول جدا برای زبان ها طراحی کرده و می خواهم به جدول اصلی ارتباط دهم اما نمی دانم چه جوری(به صورتی که این جدول زبان ها زبان ها را در صفحه ثبت نام به من نمایش دهد و ثبت زبان مورد نظر را که انتخاب کردم ذخیره شود)؟؟
اگر میشه در این رابطه من را راهنمایی کنید؟!با دستور join هم این کار کردم ولی به من خطا می دهد.خواهشا اگر می دانید جواب را به ایمبل من ارسال کنید.
با تشکر اسلامی
سلام
اگه منظورتون رو درست متوجه شده باشم شما نیاز دارید تا یک ایندکس در جدول دومتون ایجاد کنید که به کلید اصلی جدول اول متصل باشه، وقتی زبان رو انتخاب میکنید ای دی اون زبان تو جدول دوم که ایندکس در اون قرار داره ذخیره بشه
ممنون از این که به من پاسخ دادید.ولی یه مشکل بزرگی که من دارم نمی دانم از ایندکسی که گفتید چگونه استفاده کنم اگر منبعی میشناسید به من معرفی کنید تا من از طریق آن بتوانم مشکلم را حل کنم.
با تشکر
شاید این دو مقاله بتونه بهتون کمک کنه
http://nikamooz.com/learn-column-store-index/
http://www.tahlildadeh.com/ArticleDetails/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-Create-Index-%D8%AF%D8%B1-SQL
چه کار کنم تا مشکل فاصله رو در نام فیلدها حل کنم مثلاً وقتی می نویسم[ نام خانوادگی] بین این دوتا قرار میده و به خاطر فاصله ارور میده آیا چاره ای داره؟
فاصله توی نام جدول مجاز نیست
سعی کنید فاصله نذارید، یا اگه میخوائید جدا کنید حداقل از _ استفاده کنید
خیلی ممنونم ، بسیار دقیق بودش