رفتن به مطلب
  • 0

جستجو در 2 دیتابیس و گرفتن خروجی در دیتابیس سوم


arastooms

سوال

سلام به همه عزیزان و اساتید
( مخصوصا سلاطین دیتابیس)
:53:
  :53:  :53:  :53:  :53:  :53:  :53:  :53:  :53:  :53: 

 

یک سوال کاملا تخصصی آماده کردم که آموزشی هم میتونه باشه
برای دوستانی که با دیتابیس و سرچ کار میکنن و برای همین موضوع رو شرح میدم با یم مثال کاربردی

 

داشته ها :
3 عدد دیتابیس یا جدول یا هر مدل طراحی که شما دوست دارید خیلی  شیک با مشخصات زیر در عکس موجوده

اولی لیست اسم ها هست
دومی اسامی همه اعضا با رشته های ورزشی اونها هست 
سومی هم باید خالی باشه ( که من بعد از اجرای کد رو نوشتم که توضیح بدم چی لازم دارم)


قصد من این هست که بیام اسامی دیتابیس اول رو در بین اسامی دیتابیس دوم " دونه دونه بگردم " و اگر پیدا شد گروه ها رو بگیرم و ببرم در دیتابیس سوم بنویسم

خط اول رو توصیح میدم 

 

میام اسم " علی " رو میگیرم 
میرم تو جدول دوم ستون اسم میگردیم اگر بود مشخصات گروه  رو میگیریم  میبریم جدول شوم جلوش مینویسیم 
و به جستجو ادامه میدیم تا جدول تموم بشه 
اگر بازم علی بود همین کار رو انجام میدیم
(((( مشکل اینجاس که نمیدونم چه طور بینشون ویرگول بزارم و بگم جلوی علی بنویس))))
و همینطور به ترتیب وقتی تموم شد 

اسم " محمد " رو از خط دوم میگیره و همین کار ها رو تکرار میکنه 

تا جدول یک به پایان برسه


ممنون میشم تو کد نویسی دیتابیسش کمکم کنید
نکته ای که هست اینه که بهتر از یک دیتابیس با سه جدول استفاده کنم یا از 
سه دیتابیس با یک جدول و هر جدول رو در یک دیتابیس قرار بدم ؟؟
مرسی

Untitled.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر

16 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

دیتابیسی که پیوست کردید دقیقا دیتابیس بنده هست .

شما چون از فارسی استفاده میکنی بهتره که دقت کنی بقیر از عبارتت چیز دیگه ای مثل اسپیس به محتوا دیتابیس اضافه نشه ضمنان اون انزرت حتما میبایست بعد از حلقه قرار بگیره درون حلقه قرار بدید فکر کنم تنها رکورد آخر رو ذخیره بکنه

 

اگه باز مشکلی داشتید تشریف بیارید اسکایپ  : ghasminia

سلام و تشکر 

حقیقتش من بیشتر از این وقت شما رو نمیگیرم و به خودم اجازه نمیدم بیشتر مزاحم شما بشم

تا همینجا هم تشکر میکنم و سعی میکنم ببینم می تونم اصلاحش کنم یا نه تشکر 

در ضمن من همه کاراکتر های فارسی  رو چک کردم و مشکلی نداره 

ولی خروجی فقط یکی از اسم ها رو به من میده و همه گروه ها رو که نشون میده باید تغییراتی در کد انجام بشه که سعی میکنم پیداش کنم 

باز هم تشکر میکنم و سپاس

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام ارسطو

بدون شک، یه دیتابیس رو باید استفاده کنی...، یعنی دلیل برای استفاده از 3 دیتابیس نیست اصلا...


تست نزدم، ببین به کارت میاد یا نه...

یکمی هم باهاش ور برو، ببن اگه نشد، بشینم بانک بسازم و تستش کنم...

Dim sq As SQL
Dim cur,cur1 As Cursor
Dim kelaasha As String
cur = sq.ExecQuery("SELECT DISTINCT(name) FROM tbl_aaa")
For i = 0 To cur.RowCount - 1
	cur.Position = i
	
	cur1 = sq.ExecQuery("SELECT goroup FROM tbl_bbb WHERE name = "&cur.GetString("name")&"")
	For j = 0 To cur1.RowCount - 1
		cur1.Position = j
		kelaasha = kelaasha & cur1.GetString("goroup") & ","
	Next
	sq.ExecNonQuery("INSERT INTO tbl_ccc (id,name,all_group) VALUES ('"&cur.Position + 1&"','"&cur.GetString("name")&"','"&kelaasha&"')")
Next
لینک ارسال
به اشتراک گذاری در سایت های دیگر

    sq.ExecNonQuery("INSERT INTO tbl_ccc (id,name,all_group) VALUES ('"&cur.Position + 1&"','"&cur.GetString("name")&"','"&kelaasha&"')")

سلام استاد 

خط آخر یه خطا میده فکر میکنم تو نوشتن یه مقداری رو فراموش کردید یا یه پرانتز یا ...

مرسی

این هم سورس برای شما و عزیزانی که دوست دارند کار با دیتابیس رو یاد بگیرند البته هنوز مشکل داره و برطرف شد به کمک اساتید سورس اصلاح شده رو قرار میدم

http://s6.picofile.com/file/8249004718/Desktop.rar.html

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درود

کد مشکلی نداره

چه خطایی میده دقیق؟ اگه لطف کنید Screen بزارید خیلی خوبه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

نمونه کاری که میخواید انجام بدید با join :

http://stackoverflow.com/questions/11321354/join-3-tables-in-sqlite-database

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

نمونه کاری که میخواید انجام بدید با join :

http://stackoverflow.com/questions/11321354/join-3-tables-in-sqlite-database

سلام و سپاس از راهنمایی 

من مطالعه کردم  دقیقا همین موضوع مطرح شده ولی دستورات رو در بیسیک چه طور باید پیاده سازی کنم 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

مهدی ایزدی، در تاریخ 27 Apr 2016 - 4:16 عصر گفته است:

درود

کد مشکلی نداره

چه خطایی میده دقیق؟ اگه لطف کنید Screen بزارید خیلی خوبه

سلام مهدی جان سپاس از کمک و راهنمایی

در خط آخر با مقدار +1 مشکل داره که پاک میکنم درست میشه تا بشه اجرا کرد

بعد از اجرا در دیباک در خط 41 این خطا رو میده

#Region  Project Attributes 
	#ApplicationLabel: سرچ در دیتابیس
	#VersionCode: 1
	#VersionName: 1.0.0
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

Sub Process_Globals
Dim sq As SQL
Dim cur,cur1 As Cursor
Dim kelaasha As String

End Sub

Sub Globals
	Private Button1 As Button
	Private Label1 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	Activity.LoadLayout("home")
	
	File.Copy(File.DirAssets,"db2.db",File.DirInternal,"db2.db")
	sq.Initialize(File.DirInternal,"db2.db",False)

	
End Sub

Sub Button1_Click
	cur = sq.ExecQuery("SELECT DISTINCT(name) FROM tbl_aaa")
For i = 0 To cur.RowCount - 1
	cur.Position = i
	
	cur1 = sq.ExecQuery("SELECT group FROM tbl_bbb WHERE name = "&cur.GetString("name")&"")
	For j = 0 To cur1.RowCount - 1
		cur1.Position = j
		kelaasha = kelaasha & cur1.GetString("group") & ","
	Next
		sq.ExecNonQuery("INSERT INTO tbl_ccc (id,name,all_group) VALUES ('"&cur.Position &"','"&cur.GetString("name")&"','"&kelaasha&"')")

Next
	
End Sub


Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


** Service (starter) Create **
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
Error occurred on line: 41 (Main)
android.database.sqlite.SQLiteException: near "group": syntax error (code 1): , while compiling: SELECT group FROM tbl_bbb WHERE name = علی
	at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
	at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
	at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
	at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
	at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
	at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
	at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
	at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
	at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253)
	at anywheresoftware.b4a.sql.SQL.ExecQuery2(SQL.java:167)
	at anywheresoftware.b4a.sql.SQL.ExecQuery(SQL.java:155)
	at arastoo.serch.word.main._button1_click(main.java:413)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:702)
	at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:336)
	at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:246)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:134)
	at anywheresoftware.b4a.BA.raiseEvent2(BA.java:157)
	at anywheresoftware.b4a.BA.raiseEvent(BA.java:153)
	at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:78)
	at android.view.View.performClick(View.java:4498)
	at android.view.View$PerformClick.run(View.java:18591)
	at android.os.Handler.handleCallback(Handler.java:733)
	at android.os.Handler.dispatchMessage(Handler.java:95)
	at android.os.Looper.loop(Looper.java:136)
	at android.app.ActivityThread.main(ActivityThread.java:5021)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:515)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
	at dalvik.system.NativeStart.main(Native Method)

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام و سپاس از راهنمایی 

من مطالعه کردم  دقیقا همین موضوع مطرح شده ولی دستورات رو در بیسیک چه طور باید پیاده سازی کنم 

سادست

نگاه کنید where میاد داده موجود در تیبلتون رو با داده ای که دستی بهش میدید چک میکنه join میاد داده تیبلتون رو با یک تیبل دیگه چک میکنه

تو تصویر بالا که قرار دادی اگه تبل tbl_bbb رو داده های اصلی و تیبل tbl_aaa را تیبل کنترلر در نظر بگیریم  محتوا رو میتونید به این صورت استخراج کنید : ( من خیلی وقته بیسیک کار نکردم دستورات یادم رفته کد آقا شهاب رو ادیت میکنم اگه اشتباه بود اساتید درستشو بذارن )

Dim sq As SQL
Dim cur As Cursor
Dim kelaasha As String
cur = sq.ExecQuery("SELECT tbl_bbb.name AS tablb.name,tbl_bbb.group AS tablb.group FROM tbl_bbb LEFT JOIN tbl_aaa ON tbl_bbb.name = tbl_aaa.name")
For j = 0 To cur1.RowCount - 1
    cur.Position = j
    kelaasha = kelaasha & cur.GetString("tablb.group") & ","
Next
sq.ExecNonQuery("INSERT INTO tbl_ccc (id,name,all_group) VALUES ('"&cur.Position + 1&"','"&cur.GetString("tablb.name")&"','"&kelaasha&"')")

اون خطا هم اگه اشتباه نکنم برای اینه که آقا شهاب اشتباها نوشته بود goroup که همچین فیلدی نداشتی :give_rose: :give_rose:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام مرسی واقعا موضوع جدیدی رو یاد گرفتم و سپاس تست میکنم جواب رو منتقل میکنم همینجا

 

اون خطا هم اگه اشتباه نکنم برای اینه که آقا شهاب اشتباها نوشته بود goroup که همچین فیلدی نداشتی  :give_rose: 

در باره خطا من این مشکل رو متوجه شدم با اولین خطای ایجاد شده که میگفت همچین ستونی وجود نداره و غلط تایپی رو برطرف کردم 
در حال حاظر مشکل خط 41 هست که خطا رو قرار دادم 

 

متاسفانه در این خط 

 

cur = sq.ExecQuery("SELECT tbl_bbb.name AS tablb.name,tbl_bbb.group AS tablb.group FROM tbl_bbb LEFT JOIN tbl_aaa ON tbl_bbb.name = tbl_aaa.name")
 
 
با خطای زیر روبرو میشه

android.database.sqlite.SQLiteException: near ".": syntax error (code 1): , while compiling: SELECT tbl_bbb.name AS tablb.name,tbl_bbb.group AS tablb.group FROM tbl_bbb LEFT JOIN tbl_aaa ON tbl_bbb.name = tbl_aaa.name
لینک ارسال
به اشتراک گذاری در سایت های دیگر

اینو بذار جاش ببین حل میشه :

cur = sq.ExecQuery("SELECT * FROM tbl_bbb LEFT JOIN tbl_aaa ON tbl_bbb.name = tbl_aaa.name")
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

اینو بذار جاش ببین حل میشه :

cur = sq.ExecQuery("SELECT * FROM tbl_bbb LEFT JOIN tbl_aaa ON tbl_bbb.name = tbl_aaa.name")

متاسفانه خطای زیر رو نشون میده

java.lang.RuntimeException: Object should first be initialized.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

سپاس گذارم استاد 

لطف می کنید  من هم سعی کردم روش اول رو که شهاب عزیز راهنمایی کرده بودند پیاده سازی کنم که متاسفانه در نهایت با برطرف کردم همه خطاها و مشکلات 

خروجی برنامه چیزی نیست که من لازم دارم

این عکس ورودی ها و خروجی هست که هموطور که میبینید بعضی از خط ها خالی هست و هنوز مشکل داره

من کد ها رو قرار میدم عزیزان اگر این راه رو هم بتونن راهنمایی بفرماییند شاید کمکی باشه برای آموزش بهتر کار با دیتابیس و دستورات sql

http://s7.picofile.com/file/8249057034/aaaa.png

aaaa.png

کد ها هم به قرار زیر هست

	cur = sq.ExecQuery("SELECT * FROM tbl_aaa")
		For i = 0 To cur.RowCount - 1
			cur.Position = i
			
			cur1= sq.ExecQuery("SELECT * FROM tbl_bbb where name ='"&cur.GetString("name")&"'")

					For j = 0 To cur1.RowCount - 1
						cur1.Position = j
						kelaasha = kelaasha & cur1.GetString("group") & ","
					Next
				
			Dim cccc As Int=cur.Position+1
			sq.ExecNonQuery("INSERT INTO tbl_ccc (id,name,all_group) VALUES ('"&cccc&"','"&cur.GetString("name")&"','"&kelaasha&"')")
			kelaasha=""
		Next

لینک ارسال
به اشتراک گذاری در سایت های دیگر

پیوست شد بررسی کن

tbl.zip

لینک ارسال
به اشتراک گذاری در سایت های دیگر

پیوست شد بررسی کن

سلام وسپاس از شما جناب قاسمی نیای عزیز که راهنمایی می فرمایید.

من بررسی کردم با جدول و دیتابیس زیر که دقیقا دیتابیس بانام و ستون و جدولی هست که شما محبت کردید و طراحی فرمودید

فقط محتوا ستون ها رو اسم و گروه قرار دادم تا حاصل رو ببینم

////////////

متاسفانه خروجی فقط 1 خط اول هست و خروجی مطلوب و مد نظر رو نمیده

من نگاه کردم کد ها رو و این خط رو بردم داخل حلقه بالایی خودش ولی هنوز خروجی کامل نیست

sql.ExecNonQuery("INSERT INTO tbl3 (id,name,all_group) VALUES ('"&cor.GetString("tbl2.id")&"','"&cor.GetString("tbl2.name")&"','"&kelaasha&"')")

ممنون میشم اگر لطف کنید با این دیتابیس مثال بررسی کنید

//////////

در واقع من قصد دسته بندی افراد رو با گروه ها دارم در پایان 

///

با تشکر

 

دیتابیس با محتوای مثال:

http://s6.picofile.com/file/8249092284/tbl1.db.html

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دیتابیسی که پیوست کردید دقیقا دیتابیس بنده هست .

شما چون از فارسی استفاده میکنی بهتره که دقت کنی بقیر از عبارتت چیز دیگه ای مثل اسپیس به محتوا دیتابیس اضافه نشه ضمنان اون انزرت حتما میبایست بعد از حلقه قرار بگیره درون حلقه قرار بدید فکر کنم تنها رکورد آخر رو ذخیره بکنه

 

اگه باز مشکلی داشتید تشریف بیارید اسکایپ  : ghasminia

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...