PDA

View Full Version : مشکل در ایجاد ویو



arefba
دوشنبه 23 اسفند 1389, 16:54 عصر
بسم الله الرحمن الرحیم
سلام
بچه ها من سه تا تیبل دارم که می خوام ازشون ویو بگیرم اما هر کاری می کنم اونی نمیشه که من میخوام
مثلا
من یه جدول کل یه معین و یه تفصیلی دارم ورود کل فقط اجباریه و بقیه اختیاری
حالا من یه ویو گرفتم

SELECT dbo.sanad.ID, dbo.sanad.IDmoein, dbo.sanad.IDtafsily, dbo.sanad.IDkool, dbo.sanad.bedehkar, dbo.sanad.bestankar, dbo.sanad.article, dbo.kool.text,
dbo.moein.text AS Expr1, dbo.tafsily.text AS Expr2, dbo.sanad.IDgroup
FROM dbo.sanad CROSS JOIN
dbo.kool CROSS JOIN
dbo.moein CROSS JOIN
dbo.tafsily
WHERE (dbo.kool.IDkool = dbo.sanad.IDkool) OR
(dbo.sanad.IDmoein = dbo.moein.IDmoein) OR

(dbo.sanad.IDtafsily = dbo.tafsily.IDtafsily)

این دقیقا همونیه که می خوام اما از هر فیلد چند تا تکرار لود می کنه راهی برای درست کردن این موضوع هست یا نه
ممنون

arefba
دوشنبه 23 اسفند 1389, 16:58 عصر
اینجوری هم نشوشتم هم با and و هم با این پایینه

SELECT DISTINCT
dbo.sanad.ID, dbo.sanad.IDmoein, dbo.sanad.IDtafsily, dbo.sanad.IDkool, dbo.sanad.bedehkar, dbo.sanad.bestankar, dbo.sanad.article, dbo.kool.text,
dbo.moein.text AS Expr1, dbo.tafsily.text AS Expr2, dbo.sanad.IDgroup
FROM dbo.sanad CROSS JOIN
dbo.kool CROSS JOIN
dbo.moein CROSS JOIN
dbo.tafsily
WHERE (dbo.kool.IDkool = dbo.sanad.IDkool) OR
(dbo.sanad.IDmoein = dbo.moein.IDmoein) OR
(dbo.sanad.IDtafsily = dbo.tafsily.IDtafsily)

Reza_Yarahmadi
دوشنبه 23 اسفند 1389, 17:20 عصر
بصورت زیر تست کنید
SELECT
S.ID,
S.IDmoein,
S.IDtafsily,
S.IDkool,
S.bedehkar,
S.bestankar,
S.article,
K.text AS KolText,
M.text AS MoeinText,
T.text AS TafsilyText,
S.IDgroup
FROM
dbo.sanad S Inner Join dbo.kool K
ON
S.IDkool = K.IDkool
Left Outer Join dbo.moein M
ON
S.IDmoein = M.IDmoein
Left Outer Join dbo.tafsily T
ON
S.IDtafsily = T.IDtafsily

behrouzlo
دوشنبه 23 اسفند 1389, 17:24 عصر
فکر کنم دستور زیر جواب بده

SELECT dbo.sanad.ID, dbo.sanad.IDmoein, dbo.sanad.IDtafsily, dbo.sanad.IDkool, dbo.sanad.bedehkar, dbo.sanad.bestankar, dbo.sanad.article, dbo.kool.text,
dbo.moein.text AS Expr1, dbo.tafsily.text AS Expr2, dbo.sanad.IDgroup
FROM dbo.sanad inner join dbo.kool on dbo.kool.IDkool = dbo.sanad.IDkool
left outer join dbo.moein on dbo.sanad.IDmoein = dbo.moein.IDmoein
left outer join dbo.tafsily on dbo.sanad.IDtafsily = dbo.tafsily.IDtafsily

arefba
دوشنبه 23 اسفند 1389, 18:12 عصر
چه چالب این رو میشه توضیح بدید

Reza_Yarahmadi
دوشنبه 23 اسفند 1389, 20:47 عصر
چه چالب این رو میشه توضیح بدید
توضیح خاصی نداره ، جدول اصلی با جدولی که باید مقدار داشته باشه (Kool) بصورت Inner Join با هم ترکیب شده (Inner Join در صورت وجود 2مقدار که باعث درست شدن شرط بشه رکوردهای متناظر نمایش داده میشن) و برای جدولهای دیگه از Left Outer Join استفاده شده. Left Outer Join در صورتیکه برای رکورد سمت چپ معادلی در جدول سمت راست وجود داشته باشه هر 2 مقدار نمایش داده میشه و در صورتیکه در جدول سمت راست معادلی وجود نداشته باشه مقدار فیلدهای جدول سمت چپ به اضافه ، به ازا ستونهای انتخاب شده از جدول سمت راست مقدار Null نمایش داده میشه.