ورود

View Full Version : سوال: گزارش گیری از چند جدول



طبیب دل
شنبه 28 فروردین 1389, 12:19 عصر
با سلام
چطوری میشه از چند جدول طوری گزارش بگیرم که در هر سطر گزارش فقط اطلاعات مربوط به یک تاریخ خاص ذخیره شود
در هر جدول یکسری اطلاعات با تاریخ خاص ذخیره شده یعنی اگر در جدول شماره 1 در تاریخ 88/1/1 اطلاعاتی دارم نشون بده ولی فیلدهای جدول شماره 2 که این تاریخ رو ندارن در جدول گزارش خالی بمونن و اگر در جدول شماره 2 این تاریخ رو داره اطلاعات این تاریخ رو در کنار اطلاعات جدول شماره 1 از همین تاریخ نشون بده و برعکس
اگر باز هم توضیح لازم بود بگید تا بگم
با تشکر

محمد سلیم آبادی
شنبه 28 فروردین 1389, 21:23 عصر
سلام،
بایستی از FULL OUTER JOIN به این شکل استفاده کنید:


SELECT *
FROM table_1 AS T1
FULL OUTER JOIN table_2 AS T2
ON T1.date = T2.date
FULL OUTER JOIN table_3 AS T3
ON T2.date = T3.date

طبیب دل
یک شنبه 29 فروردین 1389, 18:53 عصر
سلام،
بایستی از FULL OUTER JOIN به این شکل استفاده کنید:


SELECT *
FROM table_1 AS T1
FULL OUTER JOIN table_2 AS T2
ON T1.date = T2.date
FULL OUTER JOIN table_3 AS T3
ON T2.date = T3.date

نقش table_3 اینجا چیه ؟

محمد سلیم آبادی
یک شنبه 29 فروردین 1389, 20:11 عصر
نقش table_3 اینجا چیه ؟

من طبق برداشتم از صورت مساله Query را نوشتم. تصور کردم که منظورتون از چند جدول ممکنه بیش از دو یا سه جدول باشه.

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

طبیب دل
دوشنبه 30 فروردین 1389, 13:05 عصر
باسلام
من از چند جدول گزارش میگیرم که در هر جدول یک فیلد تاریخ دارم و در جدول نتیجه هر فیلد تاریخ در یک ستون جدا میخوره و جاهایی که مقدار نداره null میخوره تا اینجا که مشکلی نیست حالا اگر بخوام همه فیلدهای تاریخ در یک ستون قرار بگیره به طوری که فقط اونی که مقدار داره درج بشه باید چی کار کنم؟
اگه توضیح بیشتر لازم هست بگید تا بگم.

محمد سلیم آبادی
دوشنبه 30 فروردین 1389, 14:26 عصر
در آن قسمتی که نام ستون ها نوشته می شود، تمام ستون های جداول را که نیاز به نمایش دادن دارید (به غیر از ستون های مربوط به تاریخ جداول) را مشخص کنید، سپس برای ستون تاریخ از عبارت زیر استفاده کنید:
SELECT COALESCE([t1.date],[t2.date],...) AS [date], ...

طبیب دل
دوشنبه 30 فروردین 1389, 17:16 عصر
در آن قسمتی که نام ستون ها نوشته می شود، تمام ستون های جداول را که نیاز به نمایش دادن دارید (به غیر از ستون های مربوط به تاریخ جداول) را مشخص کنید، سپس برای ستون تاریخ از عبارت زیر استفاده کنید:
SELECT COALESCE([t1.date],[t2.date],...) AS [date], ...
من اینطور نوشتم ولی خطا میگیره آیا طور دیگه باید فیلدهای تاریخ رو تعریف کنم؟


SELECT TOP (100) PERCENT COALESCE ([pasAndaz.dateChange], [ghest.datePardakht], [vam.dateDaryaft]) AS date, dbo.users.idSandogh, dbo.users.name,
dbo.users.Lname, dbo.users.IDHesab, dbo.Vam.mablagh, dbo.Vam.Karmozd, dbo.ghest.mandeVam, dbo.ghest.priceGhest,
dbo.pasAndaz.pasandazMonth


تصویر پیغام خطا رو هم میزارم

محمد سلیم آبادی
دوشنبه 30 فروردین 1389, 20:05 عصر
ظاهرا در نوشتن مثال اشتباه کرده ام!
از [] بطور مستقل برای نام جدول و نام ستون استفاده می شود، نه اینکه هر دو را داخل یک [] قرار دهید.
عموما زمانی که نام جداول یا ستون ها از دو کلمه تشکیل شده اند و فاصله در نام آنها وجود دارد از کاراکتر های [] در اطراف نام اشیاء استفاده می شود.
[pasAndaz.dateChange] تغییر کند به pasAndaz.dateChange یا


[pasAndaz].[dateChange]


و نام ستون های دیگر هم به همین شکل تغییر کنند.

طبیب دل
دوشنبه 30 فروردین 1389, 22:23 عصر
ظاهرا در نوشتن مثال اشتباه کرده ام!
از [] بطور مستقل برای نام جدول و نام ستون استفاده می شود، نه اینکه هر دو را داخل یک [] قرار دهید.
عموما زمانی که نام جداول یا ستون ها از دو کلمه تشکیل شده اند و فاصله در نام آنها وجود دارد از کاراکتر های [] در اطراف نام اشیاء استفاده می شود.
[pasAndaz.dateChange] تغییر کند به pasAndaz.dateChange یا


[pasAndaz].[dateChange]


و نام ستون های دیگر هم به همین شکل تغییر کنند.

خیلی ممنون مشکلم حل شد همین طور که گفتید. این طوری نوشتم pasAndaz.dateChange