PDA

View Full Version : سوال: پیدا کردن مقادیرخاص در دو ستون جدولsql که میتوانند داده های تکراری داشته باشند؟



m.h.movahedi
سه شنبه 16 آذر 1389, 08:31 صبح
سلام دوستان

من در sql یه جدول دارم که در یکی محل ودر دیگری تاریخ اشغال بودن اون وجود داره(هر دو ستون میتوانند مقادیر تکراری داشته باشند ).حالا من میخوام محل هایی که در چند تاریخ داده شده اشغال نیستند رو در یک متغیر string در C# ذخیره کنم .چطور میشه این کارو انجام داد؟

hossin.esm
سه شنبه 16 آذر 1389, 12:34 عصر
"select * from table where date not in('1389/09/16','1389/06/02')"

m.h.movahedi
سه شنبه 16 آذر 1389, 13:24 عصر
"select * from table where date not in('1389/09/16','1389/06/02')"


ممنون
ولی همانطور که گفتم ستون ها دارای مقادیر تکراری هستند .مثلا" در مورد دستور شما اگر یک محل دوبار آمده باشد یکی در تاریخ مشخص شده ویکی در تاریخ دیگر دستور select شما اولی را در نظر نمی گیرد ولی دومی را در نظر می گیرد که خطاست.

m.h.movahedi
سه شنبه 16 آذر 1389, 18:42 عصر
سلام دوستان فکر کنم دستور زیر درست باشه
select place from place_table where place not in(select place2 from first_table where place2=selected _place and data=selected_data)
که
جدولی که در ان تمام محل ها امده باشند=place_table
ستون محل های جدول بالا=place
جدول محل ها و اشغال ها=first_table
ستون محل های جدول بالا=place2
ستون تاریخ محل بالا=data

اساتید لطفا" نظر بدند که کد درسته یا نه

ولطفا" بگید چطور عناصر ستون رو (place ) در یک متغییر string قرار بدم(place-place-)

hossin.esm
سه شنبه 16 آذر 1389, 23:08 عصر
DataTable dt =new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\File.mdf;Integrated Security=True;Connect Timeout=30");
SqlCommand cmd = new SqlCommand();

da.SelectCommand = new SqlCommand();
da.SelectCommand.CommandText = "SELECT place FROM table1 WHERE (place not in (select place from table1 where date in( '1389/09/15','1389/09/16') ) )";
da.SelectCommand.Connection = con;
con.Open();
da.Fill(dt);
con.Close();
string str = "";
for (int i = 0; i<dt.Rows.Count;i++ )
{
str+= dt.Rows[i].ItemArray[0].ToString();
}
MessageBox.Show(str);

Reza_Yarahmadi
چهارشنبه 17 آذر 1389, 08:30 صبح
در صورت درست بودن دستوري كه نوشتيد ميتونيد بصورت زير عمل7 كنيد.

Declare @Result nvarchar(max)
Set @Result = (
Select
place + '-'
From
place_table
where
place NOT IN(
Select
place2
From
first_table
Where
place2=selected _place
AND
data=selected_data
)
For XML Path('')
)
Select @Result as Result

m.h.movahedi
چهارشنبه 17 آذر 1389, 17:37 عصر
سلام دوستان
کسی میتونه بگه
select @result as result به چه معنیه؟
آیا دستوری که نوشتم معتبره؟
و چطور دوستان کد رو تو یه box مینویسند؟:لبخندساده:

Reza_Yarahmadi
چهارشنبه 17 آذر 1389, 20:29 عصر
select @result as result به چه معنیه؟به این معنیه که مقدار Result@ رو نمایش بده و اسم ستونش رو Result بذار.

آیا دستوری که نوشتم معتبره؟معتبر بودن یا نبودن کد رو میشه با تست کردن فهمید. (بله معتبره اگه نبود نمیذاشتمش!!:چشمک:)

و چطور دوستان کد رو تو یه box مینویسند؟:لبخندساده: کد مورد نظرتون رو انتخاب کنید و روی دکمه # در نوار ابزار کلیک کنید و یا کدتون رو بین تگهای
[code/] و [code]
بنویسید.