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 > มีข้อมูล 2 ตาราง ตารางที่ 1 เก็บวันที่ตั้งกระทู้ ตารางที่ 2 เก็บวันที่ตอบกระทุ้ จะทำการ Order by อย่างไรหากมีสองฟิวด์ที่ต้องการให้มันเรียง



 

มีข้อมูล 2 ตาราง ตารางที่ 1 เก็บวันที่ตั้งกระทู้ ตารางที่ 2 เก็บวันที่ตอบกระทุ้ จะทำการ Order by อย่างไรหากมีสองฟิวด์ที่ต้องการให้มันเรียง

 



Topic : 110557



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



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



มีข้อมูล 2 ตาราง ตารางที่ 1 เก็บวันที่ตั้งกระทู้ ตารางที่ 2 เก็บวันที่ตอบกระทุ้ ทำการ เรียงวันที่จากมากไปหาน้อยอย่างไร

tbl_webboard
QuestionID,Question,Detail,Name ,CreateDate ,View,Reply

tbl_Reply
ReplyID,Question,Details,Name,DateReply


ปัญหา

ผมทำการจอยสองตารางเข้าด้วยกัน และ order by CreateDate มันก็จะเรียง จากวันที่ตั้งกระทุ้เท่านั้น
และถ้า Order by DateReply มันก็จะเรียง จากเวลาที่ตอบกระทู็เท่านั้น


คำถามอาจจะงง เอาเป็นว่า หลักการคล้ายๆ กับหน้า https://www.thaicreate.com/topic/forum.html
ถ้ามีการตั้งกระทุ้ใหม่มันจะบนสุด และถ้ามีการตอบกระทุ้มันก็จะอยู่บนสุด
จะมีวิธีไหนบ้างครับ



Tag : PHP









ประวัติการแก้ไข
2014-08-12 08:54:23
2014-08-12 08:59:00
2014-08-12 09:00:30
2014-08-12 15:48:54
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-08-12 08:49:23 By : Zakariya View : 974 Reply : 9
 

 

No. 1



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



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


Code (SQL)
select tb1.id, tb1.topic_name, COALEASCE( max(tb2.replydate), tb1.cratedate)) 
from tb1 left join tb2 on tb2.topic_id=tb1.id
group by tb1.id 
order by COALEASCE( max(tb2.replydate), tb1.cratedate)) desc







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 09:13:23 By : Chaidhanan
 


 

No. 2



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



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

ใช้ SQL Server 2008

Code (SQL)
select tblWebboard.QuestionID, tblWebboard.Question, COALEASCE( max(tblReply.ReplyDate), tblWebboard.CreateDate)) 
from tblWebboard left join tblReply on tblReply.QuestionID=tblWebboard.QuestionID
group by tblWebboard.QuestionID
order by COALEASCE( max(tblReply.ReplyDate), tblWebboard.CreateDate)) desc


เกิด Error
'COALEASCE' is not a recognized built-in function name.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 09:44:50 By : Zakariya
 

 

No. 3



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



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : Zakariya เมื่อวันที่ 2014-08-12 09:44:50
รายละเอียดของการตอบ ::
แก้จาก COALEASCE เป็น COALESCE แทนครับ

ชื่อตัวแปรผิดนิดหน่อย

ลองดูนะ ครับ



ประวัติการแก้ไข
2014-08-12 10:30:32
2014-08-12 10:32:00
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 10:29:26 By : nest12345
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : Zakariya เมื่อวันที่ 2014-08-12 09:44:50
รายละเอียดของการตอบ ::
ขอโทษ สกดผิด เป็นบ่อยมากครับ เริ่มแก่แล้วหูตาฝ้าฟาง


Code (SQL)
select 
     tblWebboard.QuestionID, 
     tblWebboard.Question, 
     COALESCE( max(tblReply.ReplyDate), tblWebboard.CreateDate)) as last_date 
from tblWebboard 
left join tblReply on tblReply.QuestionID=tblWebboard.QuestionID
group by tblWebboard.QuestionID
order by COALESCE( max(tblReply.ReplyDate), tblWebboard.CreateDate)) desc


ขอบคุณ nest12345 ด้วยครับ


ประวัติการแก้ไข
2014-08-12 10:53:04
2014-08-12 10:53:48
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 10:47:19 By : Chaidhanan
 


 

No. 5



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



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

1.จากคำสั่ง
Code (SQL)
select 
     tblWebboard.QuestionID, 
     tblWebboard.Question, 
     COALESCE( max(tblReply.ReplyDate), tblWebboard.CreateDate)) as last_date 
from tblWebboard 
left join tblReply on tblReply.QuestionID=tblWebboard.QuestionID
group by tblWebboard.QuestionID
order by COALESCE( max(tblReply.ReplyDate), tblWebboard.CreateDate)) desc



เกิด Error
Incorrect syntax near ')'.

2.แก้เป็น
Code (SQL)
select 
     tblWebboard.QuestionID, 
     tblWebboard.Question, 
     COALESCE( max(tblReply.ReplyDate), tblWebboard.CreateDate) as last_date 
from tblWebboard 
left join tblReply on tblReply.QuestionID=tblWebboard.QuestionID
group by tblWebboard.QuestionID
order by COALESCE( max(tblReply.ReplyDate), tblWebboard.CreateDate) desc


เกิด Error
Msg 8120, Level 16, State 1, Line 3
Column 'tblWebboard.Question' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Msg 207, Level 16, State 1, Line 4
Invalid column name 'ReplyDate'.
Msg 207, Level 16, State 1, Line 4
Invalid column name 'ReplyDate'.
Msg 207, Level 16, State 1, Line 8
Invalid column name 'ReplyDate'.
Msg 207, Level 16, State 1, Line 8
Invalid column name 'ReplyDate'.


3.แก้เป็น
Code (SQL)
select 
     tblWebboard.QuestionID, 
     tblWebboard.Question, 
     COALESCE( max(tblReply.ReplyDate, tblWebboard.CreateDate)) as last_date 
from tblWebboard 
left join tblReply on tblReply.QuestionID=tblWebboard.QuestionID
group by tblWebboard.QuestionID
order by COALESCE( max(tblReply.ReplyDate, tblWebboard.CreateDate)) desc

เกิด Error
The max function requires 1 argument(s).

เกิดจากอะไรหรอครับ
ต้องขอโทษที่ถามมากไปหน่อย ผมไม่ค่อยถนัด SQL 55
รบกวนอีกนิดน่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 11:22:19 By : Zakariya
 


 

No. 6



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



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


select
tblWebboard.QuestionID,
tblWebboard.Question,
COALESCE( max(tblReply.ReplyDate), tblWebboard.CreateDate)) as last_date
from tblWebboard
left join tblReply on tblReply.QuestionID=tblWebboard.QuestionID
group by tblWebboard.QuestionID
order by COALESCE( max(tblReply.ReplyDate, tblWebboard.CreateDate)) desc


ลบวงเล็บออกผิดที่อะครับ ต้องลบตัวหลังออก ที่ครอบmax ถูกแล้วครับ แต่ตัว coalesce ด้านหลังมันเกินมา
ผมก๊อปด้านบนลงมาเลยผิดสองที่
แก้เป็น
Code (SQL)
select 
     tblWebboard.QuestionID, 
     tblWebboard.Question, 
     COALESCE( max(tblReply.ReplyDate), tblWebboard.CreateDate) as last_date 
from tblWebboard 
left join tblReply on tblReply.QuestionID=tblWebboard.QuestionID
group by tblWebboard.QuestionID
order by last_date desc


พอดีเห็นเป็น SQLServer

Code (SQL)
select 
     QuestionID, 
     Question, 
     COALESCE( tmp.ldate, CreateDate) as last_date 
from tblWebboard 
left join (  select QuestionID as id, max(ReplyDate) as ldate from tblReply group by QuestionID ) as tmp
on tmp.id=tblWebboard.QuestionID
order by last_date desc



ประวัติการแก้ไข
2014-08-12 14:25:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 14:11:42 By : Chaidhanan
 


 

No. 7



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



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

ตอบความคิดเห็นที่ : 3 เขียนโดย : nest12345 เมื่อวันที่ 2014-08-12 10:29:26
รายละเอียดของการตอบ ::
ขอบคูณสำหรับคำตอบครับ
ตอบความคิดเห็นที่ : 6 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-12 14:11:42
รายละเอียดของการตอบ ::
ต้องขอบคุณ Chaidhanan มากเลยครับได้แล้วครับ



ขอถามคุณ Chaidhanan อีกหน่อยน่ะครับ

ถ้าต้องการ Select ชื่อ ผู้ตอบกระทู้ล่าสุดมาแสดง

Code (SQL)
select QuestionID,Question,Details,Name,Viewa,Reply,
     COALESCE( tmp.ldate, CreateDate) as last_date 
from tblWebboard 
left join (  select QuestionID as id, max(DateReply) as ldate from tblReply group by QuestionID ) as tmp
on tmp.id=tblWebboard.QuestionID
order by last_date desc


จากโค้ดแสดงชื่อผู้ตั้งกระทู้ และถ้าต้องการดึงชื่อผู้ตั้งกระทู้ล่าสุดมาแสดงต้องแทรกโค้ดตรงไหนครับ
ในตาราง tblReply มีฟิวด์ NameReply


ประวัติการแก้ไข
2014-08-12 17:52:30
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 17:49:42 By : Zakariya
 


 

No. 8



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



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


select
tblWebboard.QuestionID,
Question,
Details,
Name,
Viewa,
Reply,
NameReply,
COALESCE( tmp.ldate, CreateDate) as last_date
from tblWebboard
left join (
select max(replyID) m_id, QuestionID as id, max(DateReply) as ldate
from tblReply group by QuestionID
) as tmp
on tmp.id=tblWebboard.QuestionID
left join tblReply on tblReply.replyID=tmp.m_id
order by last_date desc
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 18:13:10 By : Chaidhanan
 


 

No. 9



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



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

ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-12 18:13:10
รายละเอียดของการตอบ ::
ได้แล้วครับ ขอบคุณมากเลยที่แบ่งปันความรู้


ปิดกระทู้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-12 21:56:06 By : Zakariya
 

   

ค้นหาข้อมูล


   
 

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