ورود

View Full Version : اشکال در viewها



jannati
شنبه 19 دی 1383, 09:56 صبح
با سلام
من یک table اصلی و 3تا table فرعی دارم که در یک viewاینها رو بهم لینک کرده ام و برای اتصال به یکgridاز این viewاستفاده میکنم و فقط در گزارش گیری ازآن استفاده میکنم.
حالا وقتی به یکی از tableهام رکوردی اضافه بشه درviewوارد نمیشه و رکوردهایی در viewهست که قبل از ساخت viewدر tableها وجود داشته و به همین جهت برای گزارش گیری روی اطلاعات جدید مشکل دارم.اینم متن view:


SELECT dbo.d_lettersv.*, dbo.d_daryaft.*, dbo.d_vaziat.*, dbo.d_girandegan.*
FROM dbo.d_lettersv INNER JOIN
dbo.d_vaziat ON dbo.d_lettersv.vaz = dbo.d_vaziat.v_code INNER JOIN
dbo.d_girandegan ON dbo.d_lettersv.girande = dbo.d_girandegan.g_code INNER JOIN

dbo.d_daryaft ON dbo.d_lettersv.daryaft = dbo.d_daryaft.d_code

اگر ممکنه یه راهنمایی بکنید که چیکار باید بکنم؟ :(

AminSobati
شنبه 19 دی 1383, 11:09 صبح
دوست عزیزم،
علتش اینه که INNER JOIN تنها در صورتی رکورد رو در Result برمیگردونه که در هر دو جدول(که دارن Join میشن) وجود داشته باشه. مثلا در دو جدول Customers و Orders تصور کنین، مشتریی که Order نداشته باشه در INNER JOIN ظاهر نخواهد شد. همچنین سفارش (یا Order) که مشتری اون معلوم نباشه.

jannati
شنبه 19 دی 1383, 11:35 صبح
پس من چطور میتونم اینکار رو انجام بدم؟ :گیج:
من یک تیبل برای نامه هام دارم که با توجه به کدهای وضعیت و اولویت و... که در تیبل اصلی است میخوام مقادیرشونو از جدولهای مربوطه بخونم.

AminSobati
شنبه 19 دی 1383, 20:57 عصر
از انواع Outer Join استفاده کنین. مثلا:

SELECT dbo.d_lettersv.*, dbo.d_daryaft.*, dbo.d_vaziat.*, dbo.d_girandegan.*
FROM dbo.d_lettersv LEFT OUTER JOIN
dbo.d_vaziat ON dbo.d_lettersv.vaz = dbo.d_vaziat.v_code LEFT OUTER JOIN
dbo.d_girandegan ON dbo.d_lettersv.girande = dbo.d_girandegan.g_code LEFT OUTER JOIN

dbo.d_daryaft ON dbo.d_lettersv.daryaft = dbo.d_daryaft.d_code