Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > สอบถามเรื่องการตรวจเลขซ้ำใน sql หน่อย พอดีจะเลือกชุดตัวเลขที่มีตัวเลขข้างในชุดที่เหมือนกันด้วยไม่สนตำแหน่งมีรูปประกอบ



 

สอบถามเรื่องการตรวจเลขซ้ำใน sql หน่อย พอดีจะเลือกชุดตัวเลขที่มีตัวเลขข้างในชุดที่เหมือนกันด้วยไม่สนตำแหน่งมีรูปประกอบ

 



Topic : 115691



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์




คือใน ฐานข้อมูลมีชุดตัวเลขอยู่ เป็นชนิด char จำนวน 3หลัก

โครสร้างsql

ชื่อตาราง data_number ฟิวส์ num_data
ข้อมูลในฟิวส์จะเป็นตัวเลข 3 หลักเช่น
124
214
421
112
211
535
779
335
533
114
141
452
524

ฉันอยากจะเช็คตัวเลขที่ซ้ำกัน ให้เอามาแค่ 1 ตัวเท่านั้น
ผลที่ได้จะเป็น
124
112
535
779
335
114
452

คือประมาณว่า ในชุดตัวเลข 3 หลัก 1 ชุดทุกตัวเลขที่มีเหมือนกัน จะนับรวมกันไม่สนว่าจะอยู่ตำแหน่ไหน

รบกวลขอท่านจอมยุธช่วยชี้แนะด้วย ^_^



Tag : PHP









ประวัติการแก้ไข
2015-04-08 13:00:55
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-04-07 22:15:12 By : byeasy View : 1223 Reply : 14
 

 

No. 1



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
<?php
function m ($x) {
	$a=array();
	for($i=0; $i<3; $i++) $a[]=substr($x[0],$i,1);
	sort($a)
	return implode('', $a);
}
function cv($input) {
 	return preg_replace_callback( '/[0-9]{3}/', m , $input );
}
$data = '124 214 421 112 211 535 779 335 533 114 141 452 524';
print_r(array_unique( explode(' ', cv($data))));
?>







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-08 09:08:07 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ต้องขอโทษคุณ
Quote:
Chaidhanan
ด้วยที่ทำให้เข้าใจผิด พอดีเขียนวิธีอธิบายผิดไปหน่อย ข้อมูลใน sql มันเป็นแบบนี้ ไม่ได้ พ่วงกันมาเป็น ชุด

ข้อมูลของตาราง

ตรง num_data นี้แหละที่อยากจะเช็คตัวเลขที่ซ้ำกัน ไม่ว่าจะอยู่ตำแหน่งใดก็ตาม ต้องขอโทษด้วยจริงๆที่อธิบายวิธีการไม่ถูกต้อง


ประวัติการแก้ไข
2015-04-08 13:03:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-08 12:59:11 By : byeasy
 

 

No. 3



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
$a=array();
$ar=array()
while( $ro=$rs->fetch_assoc()){
	for($i=0; $i<3; $i++) $a[]=substr($ro['num_data'],$i,1);
	$ar[]=implode('', $a);
}
print_r(array_unique( $ar));

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-08 13:19:34 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ทราบว่ามันผิดตรงไหน พยายามแก้แล้วแต่ก็ งง มากๆเลย ส่วน fetch_assoc() ใช้ก็ error ไม่เคยใช้เลย ผลลับมันจะแสดงตัวเลข ที่เหมือนกัน แล้ว ดูว่าตัวเลขไหนเหมือนกันมันก็จะเอาราคามารวมกัน ด้วยใช้ คำสั่งของ sql
Code (PHP)
"SELECT nuber_new, SUM(tot_up_price) AS tot_up_price FROM lottery
where (select_new = 'เลข3ตัว') and (tot_up_price > 0) 
GROUP by nuber_new HAVING SUM(tot_up_price)  > $chk1
ORDER BY tot_up_price DESC"


แต่ที่นี้จะเพิ่มคือ จะนับตัวเลขที่เหมืนกันไม่ว่าจะสลับตำแหน่งกัน คือเลข โต๊ดของหวย พอเพิ่ม code แล้ว มันแสดงผลเอา งง มากๆเลยไม่รวมกันเลย

Code (PHP)
<? 
$chk1=$_POST[textfield];
$chk2=$_POST[textfield2];
$chk1=$chk1+0;
$chk2=$chk2+0;
include "../connect.php"; 
$strSQL = "SELECT nuber_new, SUM(tot_up_price) AS tot_up_price FROM lottery
where (select_new = 'เลข3ตัว') and (tot_up_price > 0) 
GROUP by nuber_new HAVING SUM(tot_up_price)  > $chk1
ORDER BY tot_up_price DESC";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="350" border="1" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="3" align="center" valign="middle" bgcolor="#FFFFFF"><strong>โต๊ดหัว 
        <input type="submit" name="Submit" value="พิมพ์" onclick="javascript:this.style.display='none';window.print()" />
    </strong></td>
  </tr>
  <tr>
    <td width="50" align="center" valign="middle" bgcolor="#CCFFFF">ลำดับ</td>
    <td width="51" align="center" valign="middle" bgcolor="#CCFFFF">เลข</td>
    <td width="117" align="center" valign="middle" bgcolor="#CCFFFF">ราคา</td>
  </tr>
   <?
while($objResult = mysql_fetch_array($objQuery))
{
?>
  <tr>
    <td align="center" valign="middle"><?php echo ++$i; ?></td>
    <td align="center" valign="middle"><?
	$a=array();
	$ar=array();
	//while( $ro=$rs->fetch_assoc()){
		for($i=0; $i<3; $i++) $a[]=substr($objResult['nuber_new'],$i,1);
		$ar[]=implode('', $a);
	//}
	print_r(array_unique( $ar));
	
	
	?></td>
    <td align="right" valign="middle"><?=$objResult["tot_up_price"]-$chk2;?>
    &nbsp;&nbsp;</td>
  </tr>
   <?
}
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-08 23:09:01 By : byeasy
 


 

No. 5



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


statement ที่ จขกทเขียน ผมงง ชื่อ field ครับ เลยได้แต่เดา
ผิดพลาดยังไงก็ขออภัย

Code (PHP)
$strSQL = <<<SQL
SELECT nuber_new, SUM(tot_up_price) AS ttl
FROM (
	select * ,  group_concat( a ) as ga from ( 
		select * from (
			SELECT *, LEFT(select_new,1) as a FROM `lottery` union all
			SELECT *, SUBSTRING(select_new,2, 1) as a FROM `lottery` union all
			SELECT *, RIGHT(select_new,1) FROM `lottery`
		) as t order by a
	) as t1 group by no_data # ดู no_data ให้ดีนะครับ ผมว่าไม่ได้เอา ฟีลด์จริง มาให้ผม แค่สร้าง ตัวอย่างมาใช่ไหมครับ
) as t2 GROUP BY by ga
HAVING ttl  > $chk1
ORDER BY ttl DESC
SQL;



ประวัติการแก้ไข
2015-04-09 07:46:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-09 07:40:51 By : Chaidhanan
 


 

No. 6



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนี้สร้างตารางมาแบบครบแล้ว ลอง run ดู เหมือน ซิมแทคมันผิด ยัง งงกับการใช้ ซิมแทคของของท่าน Chaidhanan

123456789

ไม่รู้ว่าใส่แบบนี้ถูกหรือปล่าว

Code (PHP)
<? 
$chk1=$_POST[textfield];
$chk2=$_POST[textfield2];
$chk1=$chk1+0;
$chk2=$chk2+0;
include "../connect.php"; 


$strSQL = "SELECT nuber_new, SUM(tot_up_price) AS tot_up_price
FROM ( select * , group_concat( a ) as ga from (
select * from (
SELECT *, LEFT(select_new,1) as a FROM `lottery` union all
SELECT *, SUBSTRING(select_new,2, 1) as a FROM `lottery` union all
SELECT *, RIGHT(select_new,1) FROM `lottery`
) as t order by a
) as t1 group by no_data
) as t2 GROUP BY by ga
HAVING tot_up_price  > $chk1
ORDER BY tot_up_price DESC"


;

$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");


?>

<table width="350" border="1" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="3" align="center" valign="middle" bgcolor="#FFFFFF"><strong>โต๊ด 
        <input type="submit" name="Submit" value="พิมพ์" onclick="javascript:this.style.display='none';window.print()" />
    </strong></td>
  </tr>
  <tr>
    <td width="50" align="center" valign="middle" bgcolor="#CCFFFF">ลำดับ</td>
    <td width="51" align="center" valign="middle" bgcolor="#CCFFFF">เลข</td>
    <td width="117" align="center" valign="middle" bgcolor="#CCFFFF">ราคา</td>
  </tr>
   <?
while($objResult = mysql_fetch_array($objQuery))
{
?>
  <tr>
    <td align="center" valign="middle"><?php echo ++$i; ?></td>
    <td align="center" valign="middle"><?
	$a=array();
	$ar=array();
	//while( $ro=$rs->fetch_assoc()){
		for($i=0; $i<3; $i++) $a[]=substr($objResult['nuber_new'],$i,1);
		$ar[]=implode('', $a);
	//}
	print_r(array_unique( $ar));
	
	
	?></td>
    <td align="right" valign="middle"><?=$objResult["tot_up_price"]-$chk2;?>
    &nbsp;&nbsp;</td>
  </tr>
   <?
}
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-17 10:47:56 By : byeasy
 


 

No. 7



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


สร้าง function ไว้ใน database ใช้ phpmyadmin run คำสั่งข้างล่างครับ จะได้ function sort_num_3 มาใช้

ไว้จัดเรียงตัวเลข 3 ตัว

Code (SQL)
DELIMITER $$
CREATE FUNCTION sort_num_3 (num char(3))
RETURNS char(3) DETERMINISTIC
BEGIN
	DECLARE v_finished INTEGER DEFAULT 0;
	DECLARE v_num varchar(3) DEFAULT "";
	DECLARE rs_num varchar(3) DEFAULT "";
	DEClARE num_cursor CURSOR FOR 
		SELECT A FROM (
			SELECT LEFT(num,1) A union all
			SELECT SUBSTRING(num,2,1) union all
			SELECT RIGHT(num,1)
		) T ORDER BY A;
	DECLARE CONTINUE HANDLER 
		FOR NOT FOUND SET v_finished = 1;
	OPEN num_cursor;
		get_num: LOOP
			FETCH num_cursor INTO v_num;
			IF v_finished = 1 THEN 
				LEAVE get_num;
			END IF;
			SET rs_num = CONCAT(rs_num, v_num );
		END LOOP get_num;
	CLOSE num_cursor;
	RETURN rs_num;
END$$
DELIMITER ;


Code (PHP)
$strSQL = "SELECT ga, SUM(tot_up_price) AS tot_up_price
FROM ( 
	select tot_up_price , sort_num_3( nuber_new) as ga 
	FROM lottery
) as t
GROUP BY ga
HAVING tot_up_price  > $chk1
ORDER BY SUM(tot_up_price) DESC"



ประวัติการแก้ไข
2015-04-17 13:53:38
2015-04-17 13:54:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-17 13:50:21 By : Chaidhanan
 


 

No. 8



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ขอโทษจริงๆครับท่าน Chaidhanan ไม่ทราบว่าเขาสร้างกันตรงไหนไม่รู้ว่าแบบนี้ใช่ไหม
ลองแล้วได้ผลออกมาแบบนี้

98989


88888
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-17 15:38:33 By : byeasy
 


 

No. 9



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


จาก คห7
เปิด phpmyadmin เลือก database แล้ว คลิก sql
เอาส่วน SQL จากคห 7 ไปคิวรี่ จะได้ฟังก์ชั่น sort_num_3 ครับ

แล้ว เอาส่วนของ PHP code ไปลองรัน ดูครับ
sort_num_3
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-17 21:05:48 By : Chaidhanan
 


 

No. 10



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ทำตามเป๊ะเลย มันไม่ผ่านตรงสร้าง ฟังก์ชั่นครับ

5555

5456


ประวัติการแก้ไข
2015-04-17 22:00:25
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-17 21:57:38 By : byeasy
 


 

No. 11



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


พอจะมีวิธีอื่นนอกจากการสร้างฟังก์ชั่นใน sql ไหมครับ พอดี mysql ที่อยู่อยู่ มันไม่รองรับ ผมรู้สาเหตุแล้วว่าทำไมัน error เป็นเพราะ เวอชั่นของ sql นี้เอง คือเรื่องของเรื่องไม่อยากเปลียน sql ครับ มันพอจะมีทางอื่นอีกไหม รบกวลชี้แนะด้วย ขอบคุณมากๆครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-17 22:05:28 By : byeasy
 


 

No. 12



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


mysql version อะไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-18 02:00:41 By : Chaidhanan
 


 

No. 13



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
select nuber_new, sum(tot) tot_up_price, sort_num from (
SELECT nuber_new, tot_up_price tot,
IF( 
	LEFT(nuber_new, 1)<SUBSTRING(nuber_new, 2,1) 
	, IF(
		SUBSTRING(nuber_new, 2,1)<RIGHT(nuber_new, 1) 
		,  nuber_new   #123
		,  IF(
			LEFT( nuber_new, 1) < RIGHT( nuber_new, 1)
			, CONCAT(LEFT(nuber_new,1),RIGHT(nuber_new,1),SUBSTRING(nuber_new, 2,1) )  #132
			, CONCAT(RIGHT(nuber_new,1),LEFT(nuber_new,2) )  #231
		)
	)
	, IF(
		SUBSTRING(nuber_new, 2,1)>RIGHT(nuber_new,1)
		,  CONCAT(RIGHT(nuber_new,1),SUBSTRING(nuber_new, 2,1),LEFT(nuber_new,1) )  #321
		,  IF(
			LEFT( nuber_new , 1)<RIGHT( nuber_new, 1)
			, CONCAT(SUBSTRING(nuber_new, 2,1),LEFT(nuber_new,1),RIGHT(nuber_new,1) ) #213
			, CONCAT(RIGHT(nuber_new,2),LEFT(nuber_new, 1) ) #312
		)
	)
) sort_num
FROM `lottery`
)as t group by sort_num


ถ้ายังใช้ if ไม่ได้อีก คงหมดปัญญาใช้ sql คิวรี่ คงต้องใช้ php ช่วย ทำฟังก์ชั่นจัดเรียงเองแล้วครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-18 10:13:06 By : Chaidhanan
 


 

No. 14



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากๆครับ ใช้ if ได้มันเจ๋งมากๆเลยขอบคุณ คุณ Chaidhanan มากๆครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-04-21 13:47:24 By : byeasy
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่องการตรวจเลขซ้ำใน sql หน่อย พอดีจะเลือกชุดตัวเลขที่มีตัวเลขข้างในชุดที่เหมือนกันด้วยไม่สนตำแหน่งมีรูปประกอบ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่