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 > .NET Framework > Forum > จะ query ข้อมูลเปรียบเทียบระหว่างวันที่ส่งล่าสุด กับ วันนี้ ออกมาเป็นจำนวนวัน แล้วเอาไปโชว์ใน คอลัมได้มั้ยครับ



 

จะ query ข้อมูลเปรียบเทียบระหว่างวันที่ส่งล่าสุด กับ วันนี้ ออกมาเป็นจำนวนวัน แล้วเอาไปโชว์ใน คอลัมได้มั้ยครับ

 



Topic : 066417



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



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




ผมมีอยูู่ 2 table 1 รายการจอง 2 รายการส่ง
1 รายการจอง มีได้หลาย รายการส่ง

ใน table รายการจอง ผมมีฟิลนึงเป็น status ซึ่งจะให้โชว์ค่าระหว่างวันที่ ส่งล่าสุด กับ วันปัจจุบัน

Code (C#)
SELECT DATEDIFF(day,คอลัมวันที่ส่ง,GETDATE()) As DiffDate FROM table รายการส่ง


อันนี้จะได้ จำนวนวัน ระหว่าง วันที่ส่งกับ วันปัจจุบัน
และการ select datediff เมื่อกี้ จะต้อง where max(id) ของรายการส่ง and id รายการจอง = idรายการจองของ table รายการส่ง ถึงจะได้ วันที่ส่งล่าสุดมาอันเดียว

ผมจะ ทำ query นี้ เผื่อที่จะให้แสดง ระยะห่างวันที่ ใน ฟิล status ได้มั้ยครับ จะเอา query นี้ไปใส่ใน pageload ที่แสดงรายการจอง
จะทำ quert ซ้อนกัน ให้ได้ผลลัพธ์แบบนี้มั้ยครับ



Tag : .NET, Ms SQL Server 2008, Win (Windows App), C#, VS 2010 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-09-12 18:51:07 By : SPIRITT View : 1429 Reply : 7
 

 

No. 1



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



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


aaa

Code (C#)
SELECT A.[Resu_ID]
      ,A.[Rese_ID]
      ,A.[Resu_Date]
  FROM [Cust].[dbo].[T_Results] A , [Cust].[dbo].[T_Reservations] B
WHERE A.Rese_ID = B.Rese_ID


จะ where เพิ่มยังไงดีครับให้โชว์ คอลัม Rese_ID อันเดียวที่ Resu_ID มีค่ามากสุด ของ Rese_ID แต่ละอันๆ ให้ได้แบบนี้

bb






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-12 19:24:37 By : SPIRITT
 


 

No. 2



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



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


ให้รายละเอียดเยอะดี
แบบนี้ค่อยน่าตอบ

Code
SELECT s.[Resu_ID], s.[Rese_ID], s.[Resu_Date]
FROM [Cust].[dbo].[T_Reservations] r
LEFT JOIN [Cust].[dbo].[T_Results] s ON r.Rese_ID = s.Rese_ID
AND s.Resu_ID=(SELECT TOP 1 x.Resu_ID FROM [Cust].[dbo].[T_Results] x
WHERE x.Rese_ID = r.Rese_ID
ORDER BY x.Resu_Date DESC)



ประวัติการแก้ไข
2011-09-13 08:45:24
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-13 08:44:15 By : watcharop
 

 

No. 3



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



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


ขอบคุณมากครับท่าน นั่งคิดหลายวันไม่ได้สะที
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-13 10:36:59 By : SPIRITT
 


 

No. 4



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



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


ขอถามต่อหน่อยนะครับ

Code (C#)
SELECT s.[Resu_ID], s.[Rese_ID], s.Resu_Date,  (SELECT DATEDIFF(day,s.[Resu_Date],GETDATE())) as Status, s.Resu_Send_Total, s.Resu_Pending
FROM [Cust].[dbo].[T_Reservations] r 
LEFT JOIN [Cust].[dbo].[T_Results] s ON r.Rese_ID = s.Rese_ID
AND s.Resu_ID=(SELECT TOP 1 x.Resu_ID FROM [Cust].[dbo].[T_Results] x
WHERE x.Rese_ID = r.Rese_ID
ORDER BY x.Resu_Date DESC)


ab

ตอนนี้หาค่า ระยะหว่างของวันส่งล่าสุด กับวันนี้ได้แล้วครับ

ต่อไปจะเปียบเทียบ คอลัม ถ้า Resu_Pending มากกว่า หรือ = 0 ในช่อง Status ให้แสดงผลเป็นอย่างได้มั้ยครับ
แบบว่า ใส่ if else ใน query เลย

เคยใช้ทำแต่ ช่องคอลัมลัแสดงผลคอลัมนั้นๆเลย

Code (C#)
,case when[T_ANS] is null then '0' ";
          else [T_ANS] end as [T_ANS]";

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-13 10:47:32 By : SPIRITT
 


 

No. 5



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



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


มีภาพประกอบ และโค้ด
จะทำให้คนอื่นมีอารมณ์อยากช่วยได้ง่าย
บางคนตั้งกระทู้ถาม แล้วต้องใช้จินตนาการสูงในการตอบ


Code
(CASE WHEN DATEDIFF(day,s.[Resu_Date],GETDATE())>=0 THEN 'A'
ELSE 'B' END) As Status

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-13 11:15:13 By : watcharop
 


 

No. 6



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



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


ในความเป็นจริง ตาราง T_Reservations จะโตขึ้นเรื่อยๆ
และด้วย SQL Script ข้างล่างนี้

Code
SELECT s.[Resu_ID], s.[Rese_ID], s.[Resu_Date]
FROM [Cust].[dbo].[T_Reservations] r
LEFT JOIN [Cust].[dbo].[T_Results] s ON r.Rese_ID = s.Rese_ID
AND s.Resu_ID=(SELECT TOP 1 x.Resu_ID FROM [Cust].[dbo].[T_Results] x
WHERE x.Rese_ID = r.Rese_ID
ORDER BY x.Resu_Date DESC)


ประสิทธิภาพของการ Query ข้างต้น จะช้าลง
(คุณจะยังไม่รู้หรอก จนกว่า T_Reservations จะโตจนได้ที่)
ทางที่ดี ควรมีการสร้างคอลัมภ์ เช่น iStatus เก็บสถานะของรายการ T_Reservations ด้วย
เช่น iStatus = 1 หมายถึงรายจองนี้ยัง Open
iStatus = 2 หมายถึงรายจองนี้ Closed ไปแล้ว

แล้วเราก็ใส่เงื่อนไขเพิ่มเข้าไป
WHERE r.iStatus=1

Code
SELECT s.[Resu_ID], s.[Rese_ID], s.[Resu_Date]
FROM [Cust].[dbo].[T_Reservations] r
LEFT JOIN [Cust].[dbo].[T_Results] s ON r.Rese_ID = s.Rese_ID
AND s.Resu_ID=(SELECT TOP 1 x.Resu_ID FROM [Cust].[dbo].[T_Results] x
WHERE x.Rese_ID = r.Rese_ID
ORDER BY x.Resu_Date DESC)
WHERE r.iStatus=1

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-13 11:22:53 By : watcharop
 


 

No. 7



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



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


อ่อ พอได้แนวคิดแล้วครับ

ในเทเบิ้ล T_Reservations ผมมี Rese_Status อยู่แล้วครับ

ตอนแรก ผมเมื่อมีการแอดรายการส่งของรายการจองนั้นเสร็จก็จะ update ของ Rese_Status นั้น ว่าระหว่างวันที่แอดรายการส่ง กับ วันนี้ ต่างกันกี่วัน

Code (C#)
ss = "select max (Resu_ID) from T_Results where Rese_ID = '" + RequestID + "'";
									SqlCommand cmdss = new SqlCommand(ss, db);
									SqlDataAdapter dass = new SqlDataAdapter(cmdss);
									DataSet dsss = new DataSet();
									dass.Fill(dsss, "Cust");

									Object bs = cmdss.ExecuteScalar();

									sqls = "SELECT DATEDIFF(day,[Resu_Date],GETDATE()) As DiffDate FROM [T_Results] where Rese_ID = '" + RequestID + "' and Resu_ID = '" + bs + "'";

									SqlCommand cmdd = new SqlCommand(sqls, db);
									SqlDataAdapter dad = new SqlDataAdapter(cmdd);
									DataSet dsd = new DataSet();
									dad.Fill(dsd, "Cusst");

									Object ad = cmdd.ExecuteScalar();

									int aad = Convert.ToInt32(ad.ToString());

									StringBuilder sb = new StringBuilder();

									sb.AppendLine(" UPDATE [Cust].[dbo].[T_Reservations] ");
									//sb.AppendLine("    SET [Cust_ID] = @Cust_ID ");
									//sb.AppendLine("       ,[Fab_ID] = @Fab_ID ");
									//sb.AppendLine("       ,[Rese_Date] = @Rese_Date ");
									//sb.AppendLine("       ,[Rese_Amount] = @Rese_Amount ");
									//sb.AppendLine("       ,[Rese_Price] = @Rese_Price> ");
									sb.AppendLine("      SET [Resu_Send_Total] = @Resu_Send_Total ");
									sb.AppendLine("       ,[Resu_Pending] = @Resu_Pending ");
									sb.AppendLine("       ,[Rese_Status] = @Rese_Status ");
									sb.AppendLine("  WHERE Rese_ID = '" + RequestID + "'");
									
									SqlCommand cmds = new SqlCommand(sb.ToString(), db);
									cmds.Parameters.AddWithValue("@Resu_Send_Total", data);
									cmds.Parameters.AddWithValue("@Resu_Pending", pending);
									if (pending <= 0) {
										cmds.Parameters.AddWithValue("@Rese_Status", "ส่งครบแล้ว");
									}
									else {
										cmds.Parameters.AddWithValue("@Rese_Status", aad + " วัน");
									}



จากบรรทัดล่างๆ เปลี่ยนจาก ส่งครบแล้วเก็บเป็น เลข 1 หรือ 2 เพื่อที่จะไป where จาก query ข้างต้น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-13 12:32:32 By : SPIRITT
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : จะ query ข้อมูลเปรียบเทียบระหว่างวันที่ส่งล่าสุด กับ วันนี้ ออกมาเป็นจำนวนวัน แล้วเอาไปโชว์ใน คอลัมได้มั้ยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 อัตราราคา คลิกที่นี่