View Full Version : بازیابی رکوردهایی از یک جدول را که دارای دو فیلد مشابه
akbar_online
یک شنبه 01 شهریور 1388, 16:02 عصر
اگر بخواهیم رکوردهایی از یک جدول را که دارای دو فیلد مشابه هستند را بازیابی کنیم به چه صورت می باشد.مثلا دو فیلد نام وتاریخ مشترکی هستند
علیرضا مداح
یک شنبه 01 شهریور 1388, 16:26 عصر
سلام دوست عزیز،
بسیار ساده است:
SELECT * FROM MyTable
WHERE MyTable.Field1 = MyTable.Field2
،/
akbar_online
یک شنبه 01 شهریور 1388, 16:53 عصر
سلام دوست عزیز،
بسیار ساده است:
SELECT * FROM MyTable
WHERE MyTable.Field1 = MyTable.Field2
،/
منظورم به این صورت نبود مثال زیر را در نظر بگیر
akbar-amini-1362
reza-abasi-1365
akbar-amini-1370
میخوام رکورد اولی وآخری بازیابی کنه با توجه به نام ونام خانوادگی
محمد سلیم آبادی
یک شنبه 01 شهریور 1388, 17:12 عصر
select * from table_
SELECT *
FROM table_ AS t1
WHERE EXISTS (SELECT *
FROM Table_ AS t2
WHERE t1.[name]=t2.[name]
AND t1.family=t2.family
AND t1.ID <> t2.ID)
/*
--INPUT
id name family
----------- ---------- ----------
1362 akbar amini
1365 reza abasi
1370 akbar amini
--OUTPUT
id name family
----------- ---------- ----------
1362 akbar amini
1370 akbar amini
*/
akbar_online
یک شنبه 01 شهریور 1388, 17:46 عصر
select * from table_
SELECT *
FROM table_ AS t1
WHERE EXISTS (SELECT *
FROM Table_ AS t2
WHERE t1.[name]=t2.[name]
AND t1.family=t2.family
AND t1.ID <> t2.ID)
/*
--INPUT
id name family
----------- ---------- ----------
1362 akbar amini
1365 reza abasi
1370 akbar amini
--OUTPUT
id name family
----------- ---------- ----------
1362 akbar amini
1370 akbar amini
*/
روش دیگه نیست
csharpprogramer88
دوشنبه 25 آبان 1388, 18:41 عصر
خواهشا در مورد كاربرد اين كدها تو سي شارپ برام پيام بفرستيد
Ebrahim Asadi
سه شنبه 26 آبان 1388, 07:29 صبح
منظورم به این صورت نبود مثال زیر را در نظر بگیر
akbar-amini-1362
reza-abasi-1365
akbar-amini-1370
میخوام رکورد اولی وآخری بازیابی کنه با توجه به نام ونام خانوادگی
SELECT *
FROM Table1
WHERE (Name = 'akbar')
AND (Family='amini')
Hamid.Kad
سه شنبه 26 آبان 1388, 14:58 عصر
جناب اسدي ايشون ميخوان ركوردهايي كه اين خاصيت رو دارن انتخاب بشن. نه يك نمونه خاص !
جواب در پست شماره 4 داده شده . بعنوان راه حل ديگه ميتونيد از join استفاده كنيد كه البته از لحاظ سرعت فرق چنداني با روش ذكر شده نداره
ُSelect * from Table1 t1
inner join Table1 t2 on t1.[name]=t2.[name]
and t1.family=t2.family
and t1.ID <> t2.ID .
Ebrahim Asadi
سه شنبه 26 آبان 1388, 15:29 عصر
آره حق با شماست آقا حميد، من سوال رو اشتباه متوجه شدم. جواب هايي كه جناب msalim و شما دادين درسته. البته در روشي كه شما استفاده كردين، هم تعداد ستون هاي خروجي زياد ميشه (تمام فيلدها دوباره تكرار ميشن) و هم سطرهاي تكراري خواهيم داشت. بهتره به جاي * اسم فيلدها رو بذاريم و با استفاده از Distinct رديف هاي تكراري رو حذف كنيم و همچنين از order by براي كنار هم قرار دادن ركوردهاي مشابه استفاده كنيم:
SELECT DISTINCT t1.id, t1.name, t1.family, t1.tarikh
FROM Table1 t1 INNER JOIN
Table1 t2 ON t1.name = t2.name AND t1.family = t2.family AND t1.id <> t2.id
ORDER BY t1.name, t1.family
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.