 |
ผมมีเรื่องสงสัยครับ แนะนำกันหน่อยนะครับไม่แน่ใจว่าทำได้หรือป่าว |
|
 |
|
|
 |
 |
|
เอาไปทำ เพื่อ ?
งง อ่ะครับ ไม่ใช่อะไรหรอก คือเพื่ออะไร แค่นั้นหละครับ
คำสั่งในการนับ ก็คือ strlen นั่นหละครับ
|
 |
 |
 |
 |
Date :
2010-06-17 15:16:14 |
By :
deawx |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบข้อแรกก่อนนะครับ
สามารถทำได้ครับ โดยใช้ regular expression ครับ กำหนด textbox นั้นรับได้แต่ english ถ้าไม่ตรงก็อาจจะให้มันทำการ remove หรือว่าให้เป็น
ค่าว่าง ทำได้ทั่ง javascript และ PHP ครับ
ส่วนข้อสองนั้น
ก็อาจจะใช้ฟังก์ชั่น strlen เพื่อนับก่อนว่าจำเนวนเท่าไร แล้วนำเลขจำนวนนั้นไปใส่ใน function สร้างตาราง
ซึ่ง function สร้างตารางนั้นอาจจะทำขึ้นเองหรือหาเอาก็ได้ครับ
|
 |
 |
 |
 |
Date :
2010-06-17 15:35:39 |
By :
oxygenyoyo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่ผมถามประมาณนี้คือ เพราะว่าผมทำ ฐานข้อมูล gene ข้าว ซึ่ง จะมีเรื่องของ chromosome มาเกี่ยวข้องครับ แล้วก็เจ้า ตัว Chromosome นี้จะมีระหัส CAGT ครับ ทีนี้ผมอยากจะเก็บค่านี้ลงไปใน Table แล้ว เวลาก่อนที่จะนำออกมาแสดง อะครับ ผมจะต้องนับตัวอักษร ก่อนว่ามีกี่ตัว แล้วก็นำจำนวนที่ได้มา สร้าง colum ครับ หลังจากนั้น ให้นำ C AGT ออกมาแสดงตาม colum ที่นับได้เมื่อกี้ ครับ โดยจะให้แสดง colum ละ1 ตัวอักษรครับ
นี้คือคำอธิบายครับ ไม่ทราบว่างงกันหรือป่าวครับ
ถ้าเป็นไปได้ผมอยากเห็นตัวอย่างการนับ จำนวนตัวอักษรด้วยครับ จะได้ทำให้ผมเข้าใจมากยิ่งขึ้น
|
 |
 |
 |
 |
Date :
2010-06-17 18:09:00 |
By :
SOUL |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมงงอ่ะครับ -- ?
คือข้อมูลดิบที่ได้มานั้นเป็นอย่างไรอ่ะครับ ก่อนที่จะนำลงฐานข้อมูลอ่ะครับ
มองไม่เห็นภาพเลยว่ามันควรจะเป็นแบบไหน ถ้าไงมีตัวอย่างของ การทำงานไหมครับเช่น
ได้ข้าวมาดูว่า Chromosome เป็นไงได้มาเป็น xxxyyyaaabbb
|
 |
 |
 |
 |
Date :
2010-06-17 18:29:35 |
By :
oxygenyoyo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จริงแล้วมันเป็นเรื่องของการสั่ง Primer ในการทดลองหา DNA ต่างๆๆ ข้าวครับ ซึ่ง เวลาที่เขาสั่ง Primer
เราจะได้ sequence ของ Primer เป็นแบบนี้ครับ
GCCAC
ประมาณนี้ครับ แล้วไอ้เจ้าตัวอักษรนี้ เราจำเป็นจะต้องเก็บลงฐานข้อมูลทุกครั้งที่มีการสั่ง PRimer ครับ
แต่ว่าเวลาที่เราได้ข้อมูลมา GCCAC เราได้มาแค่นี้ครับ จริงๆๆแล้ว มีมากกว่านี้นะครับ คือเรียกไปเลื่อยๆๆครับสรับกันไปมา แต่ตรงนี้ไม่ต้องกังวลครับ สิ่งที่ผมต้องการคือ เมื่อเราเก็บ ข้อมูล ชุดตัวอักษรเหล่านี้ลงไปแล้ว ในฐานข้อมูล แต่ตอนที่แสดง ออกมา ผมอยากจะใช้จำนวนตัวอักษรตรงนี้ ในการคำนวนหา colum ครับ ถ้าตัวอักษรมี 5 ตัว ก็ได้ 5 colum ประมาณนี้อะครับ เพราะตัวอักษร GCCAC ไม่ไม่ตายตัวครับ อาจมีมากว่า 5 ตัวอักษรก็ได้ ผมเลยคิดว่าในเมื่อเวลาที่แสดงผลแล้วจำเป็นต้องใส่ตารางด้วย เพราะว่าเราแยกตัวอักษรออกเป็น ตัวเดียว ครับ เพื่อให้ง่ายต่อการ ดูครับ
|
 |
 |
 |
 |
Date :
2010-06-17 20:03:47 |
By :
SOUL |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

เพื่อแก้ปัญหานี้ถ้าใช้ Application layer มาช่วยจะทำได้ค่อนข้างจะง่าย
โจทย์คือ เรามี CHARACTER FIELD อยู่ และอยาก SLIT ออกเป็น Column ย่อยๆ
จำนวน n Column แตละ ข้อมูลแต่ละ Column คือ ตัวอักษรลำดับที่ n
โดยที่ n เริ่มจาก 1 ถึง ความยาวที่มากที่สุดของ Field นั้น
โจทย์นี้น่าจะมีทางออกทางเดียวในกรณีที่ใช้ DATA LAYER คือ DYNAMIC SQL
ตอนแรกพยายามทำให้เป็น FULL DYNAMIC แต่ไปไม่รอดค่ะ
มันจะมีการส่งค่าหากันระหว่าง Function เลยต้องผสมๆ
ใน Code เป็น MySQL Store procedure โดยอ้างจากตารางชื่อ A1
และมี FIELD ชื่อ DATA เป็นเก็บตัวข้อมูล
คุณก็เอาไปเปลี่ยนเป็นชื่อ TABLE และ FIELD ของคุณค่ะ
โดยไปแก้ใน GENERATE_RICE_GENOTYPE ที่เป็น Procedure หลัก
ค่าที่ใช้ทดสอบ ดังที่เห็นใน Screen shot ซึ่งก็น่าจะคล้ายข้อมูลจริงนะคะ
อีกอย่าง procedure GENERATE_RICE_GENOTYPE มี Parameter หนึ่งตัว
เป็นชื่อ Field อื่นๆ ที่คุณต้องการให้ output ออกมาด้วย เช่น id ค่ะ
แล้ว ทำไมไม่เขียน เป็น PHP ตอบแบบเดิม ส่วนตัวไม่ชอบ PHP ค่ะ
และการใช้ STORE PROCEDURE ก้อใช้ได้ทุกภาษาอีกทั้งความเร็วในการ Run
Store procedure จะเร็วกว่าในทุกกรณีค่ะ และเมื่อพัฒนาเสร็จ
เราก็เรียกใช้งานแบบง่ายๆ ได้สะดวกค่ะ
Code (C#)
DELIMITER $$
DROP PROCEDURE IF EXISTS `GENERATE_RICE_GENOTYPE` $$
CREATE PROCEDURE `GENERATE_RICE_GENOTYPE`
(
_VAR_ORTHER_FIELDS_LIST TEXT
)
BEGIN
DECLARE _STR TEXT DEFAULT '';
DECLARE _DYNAMIC_COLUMN_STR TEXT DEFAULT '';
DECLARE _MAX_LENGTH INT DEFAULT 0 ;
SELECT MAX(LENGTH(`DATA`)) INTO _MAX_LENGTH FROM `A1` ;
SET _DYNAMIC_COLUMN_STR = GENERATE_GENOTYPE_COLUMN ( '_GENOTYPE_PRIME' ,_MAX_LENGTH ) ;
IF (LENGTH(_VAR_ORTHER_FIELDS_LIST) > 0) THEN
SET _STR = CONCAT(_VAR_ORTHER_FIELDS_LIST, ',') ;
END IF;
SET _STR = CONCAT( 'SELECT ' ,_STR ,' RPAD(`DATA`, @MAXLENGTH ,\' \')'
,' AS _GENOTYPE_PRIME FROM A1 AS QR_MAIN'
,' \t,(SELECT @MAXLENGTH:=MAX(LENGTH(`DATA`))'
,' FROM `A1`) as QR_GETMAXLENGTH ');
SET _STR = CONCAT('SELECT * ,',_DYNAMIC_COLUMN_STR , ' FROM '
,'( ', _STR, ') AS QR_SECONDARY ;');
SET @CMDSTR = _STR ;
PREPARE _DYNAMIC_SQL FROM @CMDSTR ;
EXECUTE _DYNAMIC_SQL ;
DEALLOCATE PREPARE _DYNAMIC_SQL ;
END $$
DELIMITER ;
และ
Code (C#)
DELIMITER $$
DROP FUNCTION IF EXISTS `GENERATE_GENOTYPE_COLUMN` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `GENERATE_GENOTYPE_COLUMN`(
_VAR_FIELD_NAME TEXT ,_VAR_MAX_DATA_IN_FIELD_LEN INT
) RETURNS text CHARSET tis620
BEGIN
DECLARE _STR_RET TEXT DEFAULT '';
DECLARE _COUNTER INT DEFAULT 0 ;
DECLARE _TEMP_STR TEXT DEFAULT '' ;
DECLARE _FIELD_PARSER TEXT DEFAULT '' ;
REPEAT
SET _COUNTER = _COUNTER + 1;
SET _TEMP_STR = CONCAT ('SUBSTRING(`', _VAR_FIELD_NAME, '`,'
,_COUNTER, ',1) AS `', _COUNTER ,'`');
IF _COUNTER = 1 THEN
SET _FIELD_PARSER = CONCAT('\t', _TEMP_STR) ;
ELSE
SET _FIELD_PARSER = CONCAT( _FIELD_PARSER,'\n\t, ', _TEMP_STR ) ;
END IF ;
UNTIL (_COUNTER > _VAR_MAX_DATA_IN_FIELD_LEN) END REPEAT ;
SET _STR_RET = _FIELD_PARSER ;
RETURN _STR_RET ;
END $$
DELIMITER ;
|
 |
 |
 |
 |
Date :
2010-06-18 00:47:23 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือผมยังมีความรู้ตรงนี้ยังน้อยครับ คุณ No. 6 ช่วยขยายความหน่อยได้ไหมครับ เพราะว่าบอกตามตรง ผมยังไม่เคยใช้งานเจ้าตัวนี้เลยครับ เลยงงว่า จะใช้งานยังไง ขอคำแนะนำหน่อยครับ
--------------------------------------------------------------------------------------------อ
อีกอย่างครับ คือผมอยากจะออกแบบโดยใช้ Phpมากกว่า เพราะผมมีความถนัดมากกว่าครับ แต่ว่า ผมก็อยากจะลองเอาไปใช้เหมือนกันครับ
ถ้ายังก็แนะนำได้ครับ
|
 |
 |
 |
 |
Date :
2010-06-18 09:07:58 |
By :
SOUL |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
STORE PROCEDURE คือการฝังส่วน Query ไว้ที่ฝั่ง DATABASE เท่านั้นเองค่ะ
พอเขียนเสร็จก็เรียกผ่าน PHP ,JAVA หรือ C# ได้หมดค่ะ
ที่คุณต้องทำคือเอา RUN ใน MYSQL BROWSER
จะได้ STORE PROCEDURE มาสองอัน
ที่คุณต้องไปแก้นิดหน่อย คือ GENERATE_RICE_GENOTYPE
เพื่อเปลี่ยนเป็นชื่อ FIELD กับ TABLE ของคุณเท่านั้นเองค่ะ
จากนั้นก็เรียกผ่าน PHP แบบนี้
$sql = "CALL GENERATE_RICE_GENOTYPE('')";
$rs=mysql_query($sql);
จะได้ผลลัพธ์ออกมาเป็น table ตาม screen shot
จากนั้นจะเอาไป fetch หรือเอาไป bind datasource ของ Control ได้ตามปกติค่ะ
ว่าแต่ใช้ ฐานข้อมูลเป็น MYSQL หรือเปล่าละคะ
|
 |
 |
 |
 |
Date :
2010-06-18 10:31:43 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้ครับ ขอบคุณมากครับสำหรับคำแนะนำดีๆๆๆ ครับ
แต่ขอถามเพิ่มเติมครับ คือให้ผม copy code ด้านบนไปใส่ใช่ป่าวครับ เนื่องจากผมยังไม่เคยใช้โปรแกรมนี้ ผมเลยงงว่าผม ผมจะใส่ code นี้ยังไง แล้ว เมื่อแก้ไขตามที่คุณบอกแล้ว นั้นคือจบใช่หรือป่าวครับ
ยังงงๆๆ อยู่เหมือนแมลงทราบ พึ่งออกจาก เท็คครับ อิอิอิ ยังงัยช่วยสอนผมอีกสักนิดนะครับ ขอบคุณมากครับ
|
 |
 |
 |
 |
Date :
2010-06-18 11:33:55 |
By :
SOUL |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
COPY ไป RUN ใน MySQL Query Browser ค่ะ
ส่วน GOOGLE KEY WORD 'mysql store procedure' ค่ะ
|
 |
 |
 |
 |
Date :
2010-06-18 12:01:53 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากครับเดียวผมลองเล่นดูก่อนถ้าไม่เข้าใจยังไงเดียวค่อยถามใหม่นะครับ ขอบคุณมากครับ สำหรับความช่วยเหลือครับ
|
 |
 |
 |
 |
Date :
2010-06-18 19:31:25 |
By :
SOUL |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าไม่อยากใช้ stored และถ้าเป็นผมซึ่งไม่รู้ว่า dna มันมีกี่ตัว
ผมจะใช้ str_split ทำเป็น array แล้ว ยำมันด้วย array
|
 |
 |
 |
 |
Date :
2010-06-18 21:40:11 |
By :
plakrim |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เพราะ Primer แต่ละตัว มี gene ไม่เหมือนกันครับ เลยทำให้เราไม่ทราบว่า เราจะกำหนดอย่างไร สิ่งที่กำหนดได้ ก็เพียงแค่การกรอกข้อมูล ของ ตัวอักษร เท่านั้นครับ ที่เรารู้ ผมเลยคิดไม่ออกว่าจะทำอย่างไรดี ครับ ยังพี่
ปลากริม มีวิธีไหนที่ง่าย ก็แนะนำหน่อยนะครับ ผมอยากรู้มากครับ
|
 |
 |
 |
 |
Date :
2010-06-19 09:03:13 |
By :
SOUL |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จะทำด้วย app layer ก็ได้ค่ะ หลักการเดียวกันเพียงแต่ว่า overhead จะสูงกว่าเพราะต้องมี
loop วนหลายรอบ อาจจะผสมๆก็ได้
หลักการคือ
1. หาความยาวที่สุดของชุดข้อมูล ซึงจะเป็นตัวบอกว่าข้อมูลจะ represent ด้วย column กี่ column
2. access เข้าหาข้อมูลแต่ละตัวแล้วจัด format ใส่ลงไปใน column
3. นำเสนอชุดข้อมูล
เท่านี้เองค่ะ
|
 |
 |
 |
 |
Date :
2010-06-19 09:12:17 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอมีตัวอย่างบ้างไหมครับ
|
 |
 |
 |
 |
Date :
2010-06-19 09:18:38 |
By :
SOUL |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่อยากเขียน code php ค่ะ ANTI สุดๆ << นิสัยไม่ดีเป็นการส่วนตัวค่ะ
พอเรียนผ่านก้อฝากคืนท่านอาจารย์ไปเลยค่ะ ^ ^
|
 |
 |
 |
 |
Date :
2010-06-19 09:50:52 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (PHP)
ไม่อยากเขียน code php ค่ะ ANTI สุดๆ << นิสัยไม่ดีเป็นการส่วนตัวค่ะ
พอเรียนผ่านก้อฝากคืนท่านอาจารย์ไปเลยค่ะ ^ ^
555 ไม่เป็นมากครับ แค่นี้ ก็ขอบคุณมากแล้วครับ
แต่ผมดันกลับชอบ PHP ครับ ไม่ยอมคืนอาจารย์ครับ แต่อยากได้เพิ่มเลื่อยๆๆครับ อิอิอิ
|
 |
 |
 |
 |
Date :
2010-06-19 13:46:48 |
By :
SOUL |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|