การเขียนคำสั่ง SQL เพื่อเรียกข้อมูลจากฐานข้อมูลมาใช้งาน เป็นอีกสิ่งหนึ่งที่คนเขียนโปรแกรมต้องเจอ สำหรับบันทึกนี้ เป็นคำสั่งในการเรียกข้อมูลที่เป็นลักษณะของ hirachical data เช่นข้อมูล โครงสร้างองค์กร หรือ ข้อมูลของโครงสร้างสมาชิกในระบบขายตรง
คำสั่งนี้ได้มาตอนที่กำลังพัฒนาระบบขายตรงให้บริษัทหนึ่ง โดยที่จะต้องเขียนโปรแกรมให้แสดงโครงสร้างของเครือข่ายสมาชิกซึ่งไม่จำกัดชั้นความลึกของลูกข่าย เหมือนรูปด้านล่างนี้

ในระบบก่อน ๆ จะใช้ส่วนของโปรแกรม แต่ลึก ๆ แล้วเชื่อว่ามีคำสั่ง SQL ที่สามารถให้ผลลัพธ์ข้อมูลในลักษณะ hirachial ได้ จึงได้ไปค้นหาในอินเตอร์เน็ต จนไปเจอในเวบของ mircrosoft ตามลิงค์ด้านล่างนี้ค่ะ
http://msdn.microsoft.com/en-us/library/ms186243.aspx
ส่วนนี้เป็น systax ค่ะ ขอ copy and paste เลยล่ะกัน
WITH cte_name ( column_name [,...n] )
AS
(
CTE_query_definition –- Anchor member is
defined.
UNION ALL
CTE_query_definition –- Recursive member is defined
referencing cte_name.
)
-- Statement using the CTE
SELECT *
FROM cte_name
The semantics of the recursive execution is as follows:
- Split the CTE expression into anchor and recursive members.
- Run the anchor member(s) creating the first invocation or base result set (T0).
- Run the recursive member(s) with Ti as an input and Ti+1 as an output.
- Repeat step 3 until an empty set is returned.
- Return the result set. This is a UNION ALL of T0 to Tn.
ส่วนนี้เป็นตัวอย่างที่นำมาปรับใช้
WITH DirectReports ( memberID, memberName, sponsorID,
currentPosition, Level)
AS
(
-- Anchor member definition
SELECT e.memberID,
e.memberName,e.sponsorID, e.currentPosition, 0 AS Level
FROM MemberProfile AS e
where e.memberID = 'sp52000000'
UNION ALL
-- Recursive member definition
SELECT e.memberID,
e.memberName,e.sponsorID, e.currentPosition,
Level + 1
FROM MemberProfile AS e
Inner Join DirectReports as d
on e.sponsorID = d.memberID
)
-- Statement that executes the CTE
SELECT memberID, memberName,sponsorID, currentPosition, Level
FROM DirectReports
เท่านี้ก็จะได้ข้อมูลตามที่ต้องการ
ช่วยแนะนำขั้นตอนในการทำให้บ้างได้มั้ยคับ คือผมก็มีความสนใจการเขียนโปรแกรมประเภทนี้ แต่ยังจับต้นชนปลายไม่ถูก
ว่าจะเริมตรงจุดไหน รบกวนช่วยแนะนำหน่อยนะคับ
ยินดีให้คำแนะนำค่ะ
แต่ก่อนอื่นก็ต้องรู้ก่อนว่า คุณเขียนโปรแกรมโดยใช้ภาษาอะไรอยู่
แต่ถ้ายังไม่เคยเขียนโปรแกรมมาก่อน ก็ไปหัดเขียนก่อนเลยค่ะ เลือกสักภาษาหนึ่ง
พอเป็นแล้ว ถ้าอยากเรียนรู้หลายภาษา ก็ไม่ว่ากัน แต่ถ้าเริ่มพร้อมกันหลายตัว อาจจะทำให้งงได้ค่ะ
ขั้นตอนในการพัฒนาระบบ หลัก ๆ (อันนี้ต้องศึกษาก่อนนะว่างานที่จะทำเนี่ยะ มันสมควรเป็นระบบคอมพิวเตอร์)
1. เก็บ requirement แต่ก่อนจะไปเก็บ requirement กับ user ควรศึกษาหาข้อมูลเกี่ยวกับระบบนั้น ๆ มากเท่าที่จะทำได้
2. ก็ออกแบบ หน้าจอก่อน ไม่ว่าจะเป็นหน้าจอสำหรับนำข้อมูลเข้าไปเก็บไว้ที่ฐานข้อมูล หรือรายงาน เขียนมาให้หมด
3. แล้วก็เอาข้อ 2 ไปคุยกับ user ว่าสิ่งที่เราคุยกัน user จะได้ระบบหน้าตาอย่างนี้นะ และมันจะมีขั้นตอนการทำงานอย่างไร
ถ้าทำ prototype ได้ ก็จะดีกับคนพัฒนาระบบมาก เพราะจากประสบการณ์ ทำให้รู้ว่า user มักจะมีไอเดียบรรเจิด หลังจาก
พัฒนาระบบเสร็จ ดังนั้นการทำ prototype มันทำให้ user เห็นภาพระบบพอสมควร ถ้าหากจะมีไอเดียบรรเจิดอะไร ก็ตอนนี้เลยดีกว่า รอจนระบบเสร็จ
4. ออกแบบฐานข้อมูล
5. เขียนโปรแกรม
6. ทดสอบระบบโดย user
7. เมื่อผ่านการทดสอบแล้ว ก็ขึ้นใช้งานจริง ได้ค่ะ
ผมใช้ dreamweaver cs3 เขียนเป็นภาษา .aspx คับ ที่ยังไม่เข้าใจก็คือ การเขียนเว็บเพจแผนโครงสร้าง
แล้วให้มีความสอดคล้องกับฐานข้อมูลอย่างไรคับ
ผมแค่อยากทดลองเขียนเว็บเพจเฉพาะหน้าแผนผังสมาชิก แบบตัวอย่างด้านบนที่พี่มีภาพมาให้ดูและฐานข้อมูลที่เชื่อมโยงกับหน้าเว็บได้ เท่านั้นแหละคับ ส่วนอื่นผมจะพยายามศึกษาต่อๆไป
สำหรับภาษาโปรแกรมก็พอศึกษามาบ้าง เช่น Asp.net VB แต่ก็ไม่ถึงกับเก่งอะไร แต่พอทำความเข้าใจได้ถึงคำสั่งทั้งหลายอยู่พอสมควรคับ
ระบบลักษณะนี้ เค้ามักจะเขียนกันด้วยภาษา C หรอคับ เค้าไม่ได้ใช้โปรแกรมเขียนเว็บสำเร็จรูปในการเขียนหรอคับ
copy soruce code มาให้ดู
มันเละไปหน่อย
พี่เขียน asp.net c# ค่ะ
พอดีทำระบบ MLM ให้บริษัทหนึ่ง
ซึ่งเค้าอย่างได้ chart ของสายงานตามแต่ที่เขาจะเลือกดู
พี่ก็ไปค้น ๆ หาในอินเตอร์เน็ต ตัว .dll สร้าง chart ฟรี ๆ
ก็ไปเจอตัวนี้ ก็เอามาใช้
มันก็มีที่เค้าทำขาย สวยกว่านี้เยอะ ใช้ง่ายกว่า
แต่ลูกค้าเค้าไม่อยากจ่ายเพิ่ม
ก็เท่านี้มันเพียงพอกับที่เค้าต้องการ
ก็ไม่ต้องเสียตังค์
ถ้าน้องมีงบ หาในเน็ตได้ไม่ยาก
ขอขอบคุณมากๆคับ สำหรับคำแนะนำดีๆ เพราะผมเองก็หาข้อมูลประเภทนี้อยู่แต่หาไม่เคยเจอเลยคับ มีแต่ที่เค้าประกาศขายเป็น
แบบ โปรแกรมขายตรงแบบสำเร็จรูป ผมอยากศึกษาและทำเองดูบ้างอ่ะคับ เพราะก็ทำงานด้านขายตรงนี้อยู่
ยังงัยก็ต้องขอขอบคุณพี่ด้วยคับ แล้วจะลองนำไปทดลองทำดูตามที่พี่แนะนำมาคับ
กว่าจะหา .dll ฟรีตัวนี้เจอ ก็ใช้เวลาหลายวันอยู่เหมือนกันค่ะ
ข้อมูลในอินเตอร์เน็ตมีมหาศาล จะหาในสิ่งที่เราอยากได้ บางครั้งมันก็ยากอยู่เหมือนกัน
ถ้าน้องหัดเขียน .net
เวบไซต์ www.codeproject.com ช่วยได้เยอะ
โชคดีค่ะ
ถ้าเราจะนำเว็บเพจแผนผังสมาชิกจากของจิง ที่ใช้งานอยู่ มาพัฒนาเองต่อ จะทำได้มั้ยคับ โดยวิธีใดคับ
เว็บเพจแผนผังสมาชิกของจริง
คือ html file ใช่หรือเปล่าค่ะ
- น้องเก็บข้อมูลสมาชิกไว้ที่ไหน เช่น ฐานข้อมูล, excel ฯลฯ ซึ่งถ้าเป็นฐานข้อมูล หรือ excel ก็นำไปใช้ได้เลยค่ะ ส่วนโครงสร้างของ Table ที่เก็บข้อมูลสมาชิกนั้น จะต้องมี field ที่บ่งบอกว่า สมาชิกท่านนี้มีสปอนเซอร์เป็นใคร
- การเขียนเวบด้วย dreamweaver cs3 พี่เข้าใจว่าน้อง save เป็นไฟล์ .aspx เฉย ๆ โดยที่ไม่ได้มี code behide ตรวจดูได้ว่ามีหรือไม่ โดยไปดูว่า มี file ชื่อเดียวกันที่เป็น .aspx.vb (ถ้าเขียนด้วย vb) หรือ .aspx.cs (ถ้าเขียนด้วย c#)
- พี่อยากรู้รายละเอียดเกี่ยวกับสิ่งที่น้องมีก่อน แล้วถึงจะแนะนำให้ทำทีละเรื่องไป
- โปรแกรมตัวนี้ จะมีให้เลือกว่าจะดูผังสมาชิกของใคร จาก dropdown
- ซึ่งการเลือกชื่อสมาชิก สามารถทำได้ด้วยการเลื่อนหาตามปกติของ dropdown ทั่ว ๆ ไป หรือถ้าต้องการกรองข้อมูล ก็พิมพ์บางส่วนชื่อสมาชิก เช่น ถ้าพิมพ์ สม ใน dropdown จะดึงเฉพาะสมาชิกที่มีชื่อขึ้นต้นด้วย สม ให้เท่านั้น
- เมื่อเลือกสมาชิกได้แล้ว ก็กดปุ่มแสดง ก็จะขึ้นผังงานของสมาชิกคนนั้นให้
- โดยข้อมูลทุกอย่างอยู่บนฐานข้อมูล
ส่วนแสดงผล เป็น web page ที่มีนามสกุล .aspx
ช่วยแนะนำการสร้างฐานข้อมูลหน่อยได้มั้ยคับ พี่ใช้ฐานข้อมูล Access หรือ sql คับ แล้ว2อย่างนี้
ที่บางบทความบอกว่าฐานข้อมูล Access ไม่สามารถจุข้อมูลสมาชิกได้ในจำนวนมาก จริงเทจ อย่างไร
ในความเห็นของพี่ มีความเห็นอย่างไรคับ
ผมเขียนด้วย Microsoft Visual Web Developer 2005 Express Edition คับ
และเขียนเป็น VB คือ .aspx.vb
และการเก็บข้อมูลสมาชิกด้วย Excel ก็ทำได้หรอคับ และ มีความแตกต่างกันอย่างไร
ส่วน chart ที่พี่แนะนำมา ถ้าจะใช้เป็บ Microsoft Chart Controls ตัวนี้ได้มั้ยคับ
เพราะมีติดมาอยู่แล้วกับแผ่น asp.net 3.5
ช่วยแนะนำการสร้างฐานข้อมูลหน่อยได้มั้ยคับ พี่ใช้ฐานข้อมูล Access หรือ sql คับ แล้ว2อย่างนี้
ที่บางบทความบอกว่าฐานข้อมูล Access ไม่สามารถจุข้อมูลสมาชิกได้ในจำนวนมาก จริงเทจ อย่างไร
ในความเห็นของพี่ มีความเห็นอย่างไรคับ
- พี่ใช้ sql, mysql, sqlexpress ไม่เคยใช้ acess ค่ะ แต่อ่านเจอแบบผ่าน ๆ ว่าจุได้ตามขนาดของ harddisk ถ้าหากจะใช้เป็นฐานข้อมูลเพื่อทำ web application มันทำไม่ได้ sql มันเสียตังค์ mysql กับ sqlexpress ของฟรี
-------------------------------------------------------------------------------------
การเก็บข้อมูลสมาชิกด้วย Excel ก็ทำได้หรอคับ และ มีความแตกต่างกันอย่างไร
Excel ไม่ใช่ฐานข้อมูลค่ะ แต่ถ้าหากว่ามีข้อมูลอยู่บน excel สามารถให้โปรแกรมดึงข้อมูลจาก excel มาใช้งานได้
--------------------------------------------------------------------------------------
ส่วน chart ที่พี่แนะนำมา ถ้าจะใช้เป็บ Microsoft Chart Controls ตัวนี้ได้มั้ยคับ
เพราะมีติดมาอยู่แล้วกับแผ่น asp.net 3.5
- พี่เห็นยังไม่เห็นว่ามี organization chart นะคะ จะมีก็แต่ว่า pipe chart, bar chart ฯลฯ
พี่ช่วยแนะนำวิธีนำ organization chart .dll ใช้หน่อยได้มั้ยคับ ว่านำมาใช้อย่างไร ตอนนี้ผมได้โหลดมาแล้วแต่จะนำมาใช้โดย
วิธีใดนี่ซิคับ ยังงงอยู่ว่าจะ ใส่ไว้ที่ใด และโค๊ดต่างๆที่พี่อธิบายมา นำไปใส่ใน ส่วนของ .aspx.vb ใช่มั้ยคับ
- add reference ก่อนค่ะ
- วิธีการใช้งาน อ่านตาม link ที่ให้ไว้ได้เลยค่ะ ไม่เข้าตรงบรรทัดไหน copy แปะมาค่ะ
- ค๊ดต่างๆที่พี่อธิบายมา นำไปใส่ใน ส่วนของ .aspx.vb ใช่มั้ยคับ --> ใช่ค่ะ
ผมได้นำ organization chart.dll add เข้าไปใน website แล้วคับ
และได้ copy คำสั่งเข้าไปใน .aspx.cs แล้ว ตามขั้นตอนที่พี่แนะนำ
และได้ add map.aspxมาอีกตัวนึง เพื่อเรียก chart แต่เมื่อ ทดลองแสดงบนเว็บ
ก็ไม่แสดงผลออกมา สรุปได้ว่าผมทำผิดขั้นตอนส่วนไหน บ้างคับ
และใช้คำสั่งใดในการเรียก chart ออกมาให้แสดงผลเป็นแบบ chart ที่ต้องการ
ถ้าหากพี่พอจะมีเวลาว่าง พอที่จะทำ Demo website ขนาดเล็ก มาให้ผมดูเพื่อความกระจ่างมากกว่านี้มั้ยคับ
เนื่องจากไม่ได้เห็นของจิง ฟังพี่อธิบาย เหมือนกับเส้นผมบังภูเขา
หรือถ้าจะเอาแบบเป็นทางการ คือ พี่อยู่แถวไหนหรอคับ คิดจะรับสอนบ้างมั้ย
แต่อย่าคิดแพงนะคับ อิอิ..
ช่วยแนะนำ วิธีและขั้นตอนการ add reference OrgChartGenerator.dll ที่ website หน่อยคับ