ورود

View Full Version : نوشتن Sub Query در DBISAM



AmirSky
شنبه 25 مهر 1388, 16:35 عصر
باسلام
چگونه می توان یک Query مثل این در DBISAM نوشت؟

SELECT * FROM ( SELECT * FROM Tabel1) NewTabel

من این کار را به راحتی در SQL SERVER انجام می دهم ولی در DBISAM هر کاری می کنم نمیشه. در ضمن من تنها مشکلی که با DBISAM تا الان داشتم فقط همین بوده. از DBISAM خیلی راضی هستم کار با اون خیلی راحته مثلاً از Transaction ها به خوبی پشتیبانی میکنه هرچند مجبور شدم روش کارم رو تاحد زیادی تغییر بدم ولی در نهایت همه چیز خیلی خوب داره پیش می ره الا این یک مشکل که نمی تونم حلش کنم و واقعا بد جوری گیر افتادم. لطفا کمک کنید. ممنون

bootshow
پنج شنبه 03 تیر 1389, 13:58 عصر
این دوستمون سوالشونو یه جای دیگه پرسیدند.
اگر میخواهی اطلاعات یک جدولو تو جدول دیگه بریزی
insert into tblorder2 select * from tblorder
اگر میخواهی لیست جداولو از یک جدول دیگه بگیری نمیدونم
مثل اینطوری میخواهی؟
select * from tbl1,tbl2

gbg
پنج شنبه 03 تیر 1389, 15:30 عصر
سلام
فکر کنم دستور SELECT * FROM ( SELECT * FROM Tabel1) NewTabel
فرقی با دستور SELECT * FROM Tabel1 as NewTabel ندارن و جفتشون رکوردهای مشابهی رو بر می گردونن

AmirSky
پنج شنبه 03 تیر 1389, 15:53 عصر
نه خیلی باهم فرق دارند
به SELECT * FROM ( SELECT * FROM Tabel1) NewTabel
اصطلاحا Sub Query گفته میشه که در دستورات SQL میتوان بجای استفاده از یک Table از نتیجه یه جستجوی دیگه استفاده نمود و موارد استفاده خیلی زیادی داره که نمی دونم چرا در DBISAM این قابلیت مهم وجود نداره

bootshow
پنج شنبه 03 تیر 1389, 17:30 عصر
شد آموزش دستورات sql

select * from tblfood where id in (select foodid from tblorder)
با این دستور میتونید از رکوردهای فیلد یک جدول دیگر برای جستجو تو جدول دیگه استفاده کنید

AmirSky
پنج شنبه 03 تیر 1389, 20:57 عصر
شد آموزش دستورات sql

select * from tblfood where id in (select foodid from tblorder)با این دستور میتونید از رکوردهای فیلد یک جدول دیگر برای جستجو تو جدول دیگه استفاده کنید

نه این کلا فرق داره
از این دستور برای جستجو در یک مجموعه استفاده می شود
و با Sub Query فرق داره
مثل این



SELECT * FROM (SELECT * Table2 where id in (select foodid from tblorder) ) WHERE Field1 = 5

که یک دستور جستجو داخل یک جستجوی دیگر قرار می گیرد
و به دلیل اینکه دیدم DBISAM از این دستور پشتیبانی نمی کند اونو کنار گذاشتم
وقتی دیدم یکی از دوستان گفت با DBISAM هیچ مشکلی نداره گفتم شاید راه حلی برای اون داشته باشه

gbg
یک شنبه 06 تیر 1389, 18:59 عصر
وای خدای من

SELECT * FROM ( SELECT * FROM Tabel1) NewTabel
یعنی چی؟
اول قسمت داخل پرانتز رو معنی می کنم : یعنی تمام رکورد ه و فیلد های Table1 را انتخاب کن و select قبل از پرانتز میگه تمام رکورد ها و فیاید های انتخاب شده در select داخل پرانتر رو انتخاب کن (یعنی همون table1) و حاصل رو به نام NewTable برگردان
یعنی اون select ی که داخل پرانتز کاملا الکی نوشته شده و بجای عبارت داخل پرانتز بنویسی table1 as در نتیجه select هیچ تفاوتی نداره
می خوای یه مثال هم بزنم؟

AmirSky
دوشنبه 07 تیر 1389, 12:31 عصر
اون یک مثال خیلی ساده بود. معلومه که با هم فرقی ندارند!
اما ممکنه که خیلی پیچیده تر هم بشه
واگه کاربرد نداشت مطمئنا توسط دیتابیس های مختلف ساخته نمی شد

gbg
دوشنبه 07 تیر 1389, 19:11 عصر
یه زحمتی بکش و مثال پیچیدش رو بزار تا بگم چطوری میشه

fahimi
چهارشنبه 07 دی 1390, 22:13 عصر
این در اکسس بدون خطا اجرا میشود ولی در dbisam خطایی 11949 را می دهد

SELECT f1.name_kala, Sum(f1.tedad) AS Forush90,
(select sum(tedad) as forush90 from forosh f2
where f2.name_kala = f1.name_kala and f_date between '1389/06/01' and '1389/06/31'
group by name_kala ) AS Forush89
FROM forosh AS f1
WHERE (((f1.[f_date]) Between '1390/06/01' And '1390/06/31'))
GROUP BY f1.name_kala

fahimi
شنبه 10 دی 1390, 21:57 عصر
من ایمیل به پشتیبانی dbisam فرستادم و جواب آن این بود
No, DBISAM does not support using sub-queries as scalar values. Our newer product, ElevateDB, does allow for this

AmirSky
جمعه 30 دی 1390, 00:11 صبح
به نظر من دیتابیسهایی مثل dbisam و ElevateDB و همینطور access
به درد یک پروژه تجاری نمیخورند
mySQL و ms sql express از نظر من گزینه های مناسبتری هستند

سعید صابری
جمعه 30 دی 1390, 00:21 صبح
به نظر من دیتابیسهایی مثل dbisam و ElevateDB و همینطور access
به درد یک پروژه تجاری نمیخورند
mySQL و ms sql express از نظر من گزینه های مناسبتری هستند
البته بستگی به نوع پروژه دارد

AmirSky
جمعه 30 دی 1390, 16:23 عصر
البته بستگی به نوع پروژه دارد

دقیقا . من تقریبا همه دیتابیس ها تست کردم. هیچکدوم بدون ایراد نیستند
برای پروژهای خیلی کوچیک یا پروژهایی که دیتاها اهمیت زیادی ندارند میشه از دیتابیسهایی مثل dbisam و access استفاده کرد
که البته ممکنه مشکلات زیادی برای برنامه نویس و یوز بوجود بیارن

gbg
جمعه 30 دی 1390, 22:08 عصر
موافق نیستم
من از DbIsanدر 4 پوروژه تجاری خودم استفاده کردم و ازش هم حسابی راضی هستم

fahimi
یک شنبه 02 بهمن 1390, 08:08 صبح
من هم از dbisam کرده ام ولی بعضی از مواقع کلافه کننده است مثلا group by فیلد های memo یا استفاده از subquery به عنوان فیلد