PDA

View Full Version : جداکردن نامه های محرمانه از نامه های غیرمحرمانه



forodo
چهارشنبه 27 فروردین 1393, 19:37 عصر
سلام
من توی ذخیره داخل بانک گفتم اگر نوع نامه محرمانه بود فیلد TabagheType رو 1 بذار و در غیراینصورت 0 بذار.
حالا من می خوام اون سطرهایی رو که میاره اگر محرمانه بود ببینه نام کاربری فرستنده یا گیرنده نامه همون کسی هست که داره الان با برنامه کار می کنه یا نه.
اگر بود نشون بده و اگر نبود نشون نده.
سلکت خودم این شکلی ولی این فقط نامه های غیرمحرمانه رو میاره.
SELECT *
FROM tblErsali INNER JOIN tblDaryafti
ON tblErsali.ID = tblDaryafti.LetterID
WHERE tblErsali.TabagheType = 0

Rejnev
چهارشنبه 27 فروردین 1393, 21:20 عصر
توی سلکت باید کاربر رو هم دخیل کنید.
مثلا من یک نامه ایجاد کردم. اما اجازه دسترسی به سطح محرمانه رو ندارم. ولی با این حال نامه خودم رو که محرمانه ست میتونم ببینم:

declare currentUser int;
set currentUser=1;


select
*
from
ersali e, daryafti d, karbar k
where
e.id=d.letterID and
k.id=e.karbarID and
(k.id=currentID or e.tabagheType=0)

البته دو خط اول رو باید حذف کنید و به نحوی یه عنوان پارامتر خودتون به کوئری پاس بدین.

forodo
جمعه 29 فروردین 1393, 12:09 عصر
من با کوئری زیر تمام نامه هارو میارم:
SELECT tblLetterSadere.ID,tblLetterSadere.LetterID,LevelL ,senderUserName
,Subject,tabaghe,jahat,SendDate,Sendtime,
bazgasht,peyrov, TabagheType,NumberForAC
FROM tblLetterSadere
WHERE tblLetterSadere.IsFonosht = 1
که خروجیش می شه این:
http://up.iranfilm125.com/images/52540263784186656144.jpg
حالا می خوام بگم توی خروجی بالا اگه TabagheType برابر 1 بود برو نگاه کن ببین این نامه رو کیا فرستادن و کیا دریافت کردند که برای این دو نامه افراد فرستنده و گیرنده اینا هستند.
SELECT senderUserName, WhatModir, NumberForAC
FROM tblLetterSadere
UNION ALL
SELECT SendErjaa, ReceiverUserName, NumberForAC
FROM tblDaryafti
WHERE ReceiverUserName IS NOT NULL AND NumberForAC IS NOT NULL
که خروجیش اینه:
http://up.iranfilm125.com/images/62300731299496474664.jpg
حالا اگر نام کاربری کسی که داره با برنامه کار می کنه داخل یکی از این فیلدها بود برام اون سطر رو بیاره در غیراینصورت رد شه بره بعدی.
در اصل یه چیزی مثل این می خوام:
اگر TabagheType برابر 1 برو تمام افرادی که با این نامه سروکار داشتند رو بیار و نگاه کن ببین نام کاربری کسی که داره با برنامه کار می کنه جز افرادی که با نامه سروکار داشتند هست یا نه. اگر هست اون سطر رو نشون بده و اگر نیست اون سطر رو نشون نده.

forodo
چهارشنبه 17 اردیبهشت 1393, 14:35 عصر
بدجوری نیاز دارم.
هرچی فکر می کنم به هیچ جا نمی رسم.

forodo
پنج شنبه 18 اردیبهشت 1393, 00:09 صبح
دوستان اگر کد SQLای برای این پیدا نشه مجبورم که همورو بیارم بعد از توی دیتاگریدویو حذف کنم که سرعتم وحشتناک میاد پایین.
لطفاً راهنمایی کنید.

forodo
چهارشنبه 24 اردیبهشت 1393, 10:21 صبح
یعنی راهی وجود نداره؟

Rejnev
چهارشنبه 24 اردیبهشت 1393, 20:43 عصر
توی همون خروجی آخر چرا یک شرط دیگه اضافه نمیکنین که senderUsername رو با کاربر جاری مقایسه کنه؟!