الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

المساعدة في انشاء استعلام

مغلق
بدأه I_s في 18 أكتوبر 2007 · 2 رد · 729 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اخوتي الكرام اعضاء المنتدى

كل عام وانتم بخير

ارجو منكم جميعا المساعدة فانا في اشد الحاجة اليها حيث اعمل على مشروع لابد لي من تسليمه خلال ايام

تواجهني في هذا المشروع عقبة الا وهي انه لدي جدول

edges (parent_id,child_id)

يحتوي هذا الجدول على حقلين

Parent_id: يمثل النقطة الأب

child_id :يمثل النقطة التابعة لها في العلاقة

المطلوب في هذا المثال ان اجد المسارات بمعنى انه لو عندي

parent_id child_id

p1 p2

p1 p3

p1 p4

p2 p5

p2 p7

p3 p15

p4 p25

تصبح المسارات المتاحة لدينا هي

p1,p2,p5

p1,p2,p7

p1,p3,p15

p1,p4,p25

لذلك قممت بانشاء جدول اسمه path

هذا الجدول بناء على استعلام

select * from edges;

ثم قمت بالعمل على الناتج

			sql = "select parent_id,child_id from edges"
			' MsgBox(sql)
			conn.Open()
			cmd = New OleDbCommand(sql, conn)
			dr = cmd.ExecuteReader

			While dr.Read
				Dim path As String = dr.Item(0) & "," & dr.Item(1)
				'   MsgBox(path)
				Dim sql1 As String = " insert into path values('" & dr.Item(0) & "','" & dr.Item(1) & "','" & path & "')"
				If con.State = ConnectionState.Closed Then
					con.Open()
				End If
				cmd1 = New OleDbCommand(sql1, con)
				cmd1.ExecuteNonQuery()
			End While
			cmd1.Dispose()
			con.Close()
			conn.Close()

ثم للوصول للنتيجة النهائية كتبت هذا الاستعلام والذي قرأته في مثال تمت كتابته في mysql

ولكنه لم يعطني اي نتائج

sql = "SELECT path.node_id, edges.child_id FROM path, edges WHERE path.child_id=edges.parent_id"
			'  MsgBox(sql)
			conn.Open()
			cmd = New OleDbCommand(sql, conn)
			dr = cmd.ExecuteReader
			If Not dr.Read Then
				MsgBox("no result pathes")
			End If

			While dr.Read
				Dim pathes As String = dr.Item(2) & "," & dr.Item(1)

				Dim sql1 As String = "insert into pathes values('" & pathes & "')"
				MsgBox(sql1)
				con.Open()
				cmd1 = New OleDbCommand(sql1, con)
				cmd1.ExecuteNonQuery()

مع العلم ان الكود الاصلي المكتوب بال mysql مكتوب كالتالي

CREATE OR REPLACE VIEW nextroutes AS
  SELECT
	routes.depart,
	flights.arrive,
	CONCAT(routes.route, ',', flights.arrive) AS route,
	 FROM routes INNER JOIN flights
	ON routes.arrive = flights.depart
	GROUP BY depart,arrive;

لذا أرجو منكم مساعدتي هل هناك خطأ في كتابة الاستعلام او هل هناك من لديه اي فكرة للوصول للنتيجة الطلوبة نداء من محترفي البرمجة مساعددتي

ولكم جزيل الشكر

تم تعديل هذه المشاركة بواسطة I_s في 18 أكتوبر 2007 في 23:32

#2

انا مافهمت وش تقصد بالمسارات

ياريت تشرح بشكل اكثر وتكتب المستطلحات بالانقلش

رســالـة من يتيــم

AytamResalhGIFmesg.gif

http://www.aytam.org.sa/message_aytam.php

----

أتمنى لك التوفيق اخي cold0zero في موقعك

logo.gif
#3

يمكنك اخضار البيانات من الجدول والعمل معها فى ال dataset برمجيا بكل سهوله كما شئت .

فمثلا بعد اخضارها تختبر اذا كان للحقل child_id قيمه فى الحقل parent_id وذلك بالمرور على كل القيم العائده هذا اولا .

ثم تختبر اذا كان ال parent_id يملك قيمه كالموجوده فى ال child_id اذا كان كذلك .اذن تضع السجلات المتوافقه وتعمل loop على كل سجلات الجدول لذلك وهذا سيكون اسهل من كتابه استعلام SQL معقد

بالتوفيق

هذا الموضوع مغلق.

مواضيع مشابهة