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 > มีวิธี SELECT จาก Database เพื่อจะกำหนด ลำดับ ของ row นั้นๆไหมครับ ให้มันนับ 1 , 2 , 3 ไปเรื่อยๆ



 

มีวิธี SELECT จาก Database เพื่อจะกำหนด ลำดับ ของ row นั้นๆไหมครับ ให้มันนับ 1 , 2 , 3 ไปเรื่อยๆ

 



Topic : 081537



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



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




ลักษณะอง db คือมีการเก็บ งวด การเบิกเงินครับ ว่าเบิกโดยใคร เบิกจำนวนเท่าไร เบิกวันที่เท่าไร

มี field ประมาณนี้ครับ
wd_id //เป็น PK และ Auto num
wd_by //เก็บเป็นเลข id ไว้ join กับอีกตาราง
wd_date //วันที่เบิก
wd_amount //จำนวนเงินที่เบิก



สมมุติข้อมูลในตารางเป็นแบบนี้ครับ

ตย.ข้อมูลในตาราง

นี่คือตัวอย่างที่อยากให้ SELECT ออกมาได้

ตย.ข้อมูลที่ต้องการ

คือต้องการให้มัน count ให้ในคำสั่ง SELECT อะครับ
คือไม่รู้ว่าสามารถ ทำในคำสั่ง SQL ไดหรือไม่

ในกรณีที่ไม่สามารถไปแก้ไข เพิ่ม field ใน table เพื่อเก็บ งวดที่ ตั้งแต่ตอน insert ลง ฐานข้อมูล อะครับ
จะแก้ไขได้อย่างไรครับ



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-07-25 16:08:49 By : Likito View : 3815 Reply : 8
 

 

No. 1



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


ดูฐานข้อมูล ดูปลที่ต้องการ อ่านคำถาม แล้วยังไม่เข้าใจครับ...
เดี๋ยวขอเรียบเรียงใหม่นะ
1. มีฐานข้อมูลที่เพิ่มฟิลด์ไม่ได้
2. ต้องการแสดงฟิลด์ "งวดที่เบิก"

คิด concept ได้แค่ว่า
ถ้าเจอ wd_by คนที่ 1 ครั้งที่ 1 ให้เป็นงวดที่ 1
ถ้าเจอ wd_by คนที่ 1 ครั้งที่ 2 ให้เป็นงวดที่ 2
ถ้าเจอ wd_by คนที่ 2 ครั้งที่ 1 ให้เป็นงวดที่ 1
.
.
.
เด๋วเข้าที่ทำงานจะลองไปไปสร้าง db แล้วลองคิวรี่ดู ถ้าได้เด๋วเข้ามา edit ต่อนะ....
แต่ถ้าไม่ได้ก็ขออภัยล่วงหน้า

กลับมาอ่านล่ะ เด๋วช่วยคิด








ประวัติการแก้ไข
2012-07-26 09:17:50
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-26 06:23:04 By : apisitp
 


 

No. 2



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : apisitp เมื่อวันที่ 2012-07-26 06:23:04
รายละเอียดของการตอบ ::
ใช่แล้วครับ
ในกรณีที่ Database มีข้อมูลอยู่แล้ว เลยจะไปแก้ table เพื่อเพิ่ม field มาไว้เก็บลำดับ ตั้งแต่ตอน insert คงไม่ไหว

แล้วอีกอย่าง เกิดมีการลบ record ออกไป เช่น

wd_by คนที่1 งวดที่1
wd_by คนที่1 งวดที่2
wd_by คนที่1 งวดที่3

ถ้าเกิดมีการลบ record งวดที่2 ออก แล้วเก็บข้อมูลงวดที่ ตั้งแต่ตอน insert
เวลา ตอน select ออกมาดู เลขมันก็ จะข้ามเหลือ งวดที่1 แล้วข้ามไปงวดที่3 เลย

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-26 08:55:22 By : Likito
 

 

No. 3



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


ถ้ามีการลบข้อมูลด้วยแบบนี้ ผมคิดออกแค่แบบเดียวครับ คือ การ search โดยเอาเงื่อนไข wd_by

$search = 1 ;
sql = "select * from ชื่อตาราง where wd_by = '$search'";
แต่ค่าที่ได้ออกมาก็จะเป็นชื่อของ คนที่ 1 คนเดียว ส่วน "งวดที่" ก็สร้างตัวแปรมาใส่ กำหนดค่า $i=1 ก่อนวนลูป เอาค่าไปใส่....

แต่ถ้าออกมาหลาย ๆ คน แบบต้องการยังคิดไม่ออก -*- ขออภัยด้วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-26 09:30:49 By : apisitp
 


 

No. 4



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



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


ได้แล้วครับ

แต่ไม่ได้ทำใน query sql ทำที่ตัว code แทน
SELECT มาตามปกติ แหละครับ


ใช้วิธี กำหนด rs_by เป็น key ใน array
ส่วน value ที่ตำแหน่ง key นั้น + 1 เอา


ประมาณนี้ครับ
Code (PHP)
$sql = "SELECT ..........";

$query = mysql_query($sql);
$array = array();
while( $result = mysql_fetch_array( $query )  ){

    $array[$result["wd_by"]] = 1 + $array[$result["wd_by"]];

    echo "งวดที่ ".$array[$result["wd_by"]];
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-26 11:23:01 By : Likito
 


 

No. 5



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


ดีใจด้วย พอดีทำได้เหมือนกันเลยขอลงหน่อยละกัน ^^

Code (PHP)
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<LINK rel="stylesheet" type="text/css" href="badminton/style.css">
<?PHP
	mysql_connect('localhost','user','1234') or die("ติดต่อ Host ไม่ได้");
	mysql_select_db('class') or die("ติดต่อฐานข้อมูลไม่ได้");
	mysql_query("SET character_set_results=tis620");
	mysql_query("SET character_set_client='tis620'");
	mysql_query("SET character_set_connection='tis620'");
	mysql_query("collation_connection = tis620_thai_ci");
	mysql_query("collation_database = tis620_thai_ci");
			//สร้างตาราง	
				print "<table class=simply>";
				print "<tr>";
				print "<th align = center width = 150>คนที่</th>";
				print "<th align = center width = 150 >เงินยืม</th>";
				print "<th align = center width = 150 >งวดที่</th>";
				print "</tr>";

$sqlData = "select * from test order by wd asc" ;
$sqlqueryData=mysql_db_query('class', $sqlData);
//กำหนด ค่า n เอาไปใช้เทียบกับค่า count
$n = 1;
while($rsData = mysql_fetch_array($sqlqueryData))		
		{

				print "<tr>";
				print "<td height=35 align = center>".$rsData['wd']." </td>";
				print "<td height=35 align = center>".$rsData['am']." </td>";
				$sql01 = "SELECT COUNT(wd) AS q FROM test WHERE wd=".$rsData['wd']."";
				$sqlquery01=mysql_db_query('class', $sql01);
				while($rs01 = mysql_fetch_array($sqlquery01))


					{
				$k = $rs01['q'];
				//print "<td height=35 align = center>".$k." </td>";
					if($n <= $k){		
				print "<td height=35 align = center>".$n." </td>";
						$n ++;
					if($n>$k)
									{		
											$n = 1;
						}}}
				print "</tr>";
}
print"</table>";
?>


Code (PHP)
-- phpMyAdmin SQL Dump
-- version 2.10.3
-- http://www.phpmyadmin.net
-- 
-- Host: localhost
-- Generation Time: Jul 26, 2012 at 12:33 PM
-- Server version: 5.0.51
-- PHP Version: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- 
-- Database: `class`
-- 

-- --------------------------------------------------------

-- 
-- Table structure for table `test`
-- 

CREATE TABLE `test` (
  `id` int(2) NOT NULL auto_increment,
  `wd` int(4) NOT NULL,
  `am` int(9) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=tis620 AUTO_INCREMENT=13 ;

-- 
-- Dumping data for table `test`
-- 

INSERT INTO `test` VALUES (1, 1, 5000);
INSERT INTO `test` VALUES (2, 1, 1200);
INSERT INTO `test` VALUES (3, 1, 2500);
INSERT INTO `test` VALUES (4, 1, 2000);
INSERT INTO `test` VALUES (5, 2, 2000);
INSERT INTO `test` VALUES (6, 1, 200);
INSERT INTO `test` VALUES (7, 3, 3000);
INSERT INTO `test` VALUES (8, 2, 2500);
INSERT INTO `test` VALUES (9, 2, 800);
INSERT INTO `test` VALUES (10, 4, 900);
INSERT INTO `test` VALUES (11, 2, 500);
INSERT INTO `test` VALUES (12, 3, 100);


ยาวมากแต่ก็ได้เพราะมั่ว 555+ เต็ม ๆ


ประวัติการแก้ไข
2012-07-26 11:39:30
2012-07-26 11:45:05
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-26 11:37:49 By : apisitp
 


 

No. 6



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



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


คือจริงๆแล้ว SELECT นั้น มันมีเงื่อนไข WHERE เยอะกว่านีครับ แล้วมีการ JOIN อีก table

ผมเลย ยกมาถาม แค่ส่วนนึงหลักๆ


SELECT * FROM table ORDER BY wd_date


ประมาณนี้ครับจะได้ ผลตาม รูปที่ 1

ตามนี้เลย

แล้วใช้วิธีตามที่บอก คือ เก็บ wd_by เป็น key ใน array สำหรับอ้างถึง ส่วน value ก็เป็น งวดที่ +1
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-26 11:41:55 By : Likito
 


 

No. 7



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-26 11:45:37 By : apisitp
 


 

No. 8



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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

ดีใจด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-07-26 21:37:48 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มีวิธี SELECT จาก Database เพื่อจะกำหนด ลำดับ ของ row นั้นๆไหมครับ ให้มันนับ 1 , 2 , 3 ไปเรื่อยๆ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 05
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 อัตราราคา คลิกที่นี่