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ครับ มี2ตารางต้องการแสดงคอมเม้นล่าสุดทำยังไงครับ



 

สอบถามปัญหาคำสั่ง SQLครับ มี2ตารางต้องการแสดงคอมเม้นล่าสุดทำยังไงครับ

 



Topic : 117574



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



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




ผมมีตาราง2ตารางครับ คือ มีตารางที่เก็บหัวข้อของบอร์ดและตารางเก็บคอมเม้น
โดยทั้ง2ตารางเชื่อมโยงกัน ปัณหาคือ1หัวข้อสามารถคอมเม้นได้ไม่จำกัด
แต่ผมต้องการแสดงSELECTเอาคอมเม้นล่าสุดของแต่ละหัวข้อมาแสดงเท่านั้น และไม่ให้โชว์หัวข้อซ้ำครับ(id_board) ดังผลลัพ
ผมใช้ทั้ง DISTINCTและgroup by ก็ไม่ได้ครับ รบกวนชี้แนะหน่อยนะครับ



2



Tag : PHP, MySQL









ประวัติการแก้ไข
2015-07-05 20:38:25
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-07-05 20:33:31 By : gun101gun View : 892 Reply : 9
 

 

No. 1



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



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


Code (SQL)
create table if not exists board(
  id_board int unsigned not null auto_increment primary key,
  topic varchar(50) not null
  )engine=myisam default character set utf8;
  
  create table if not exists txtcomment(
  id_comment int unsigned not null auto_increment primary key,
  id_board int unsigned not null,
  postdate datetime null default null,
  txt_comment varchar(100) not null
  )engine=myisam default character set utf8;
  
  insert ignore into board values(null,'Hello.'),(null,'Where are you come from?'),
(null , 'Rides for life.');

insert ignore into txtcomment values(null,1,'2015-06-20 12:32:30','hello world!'),
(null,1,'2015-06-21 8:30:10','hello,how areyou?'),
(null,2,'2015-06-10 12:12:30','I come from USA.'),
(null,2,'2015-07-01 23:45:10','No matter where I am from.'),
(null,2,'2015-07-01 12:32:30','I am from Taiwan Taipae.'),
(null,2,'2015-07-02 09:12:41','I lives in Thailand so long times.'),
(null,3,'2015-06-11 04:47:10','Yes,I love to rides.Could you suggest?'),
(null,3,'2015-06-17 14:12:30','Can I join the trip?');

// จากข้อมูลทดสอบด้านบน เราจะเขียนคำสั่งได้ดังนี้

select t1.id_board,t1.topic,t2.id_comment,t2.txt_comment,t2.postdate
from board t1 left join txtcomment t2 using(id_board)
where concat(postdate,':',id_board) in (select concat(max(postdate),':',id_board) from txtcomment group by id_board order by postdate desc)
order by t1.id_board,postdate desc 


Quote:
id_board topic id_comment txt_comment postdate
1 Hello. 2 hello,how areyou? June, 21 2015 08:30:10
2 Where are you come from? 6 I lives in Thailand so long times. July, 02 2015 09:12:41
3 Rides for life. 8 Can I join the trip? June, 17 2015 14:12:30







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-05 22:50:27 By : cowboycnx
 


 

No. 2



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



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


Quote:
ทดลองดูครับ

select t1.id_board,t1.topic,t2.id_comment,t2.data
from board t1 left join comment t2 using(id_board)
where concat(date,':',id_board) in (select concat(max(date),':',id_board) from comment group by id_board order by date desc)
order by t1.id_board,date desc

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-05 22:54:33 By : cowboycnx
 

 

No. 3



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

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

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


ตอบความคิดเห็นที่ : 2 เขียนโดย : cowboycnx เมื่อวันที่ 2015-07-05 22:54:33
รายละเอียดของการตอบ ::
เยี่ยมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-05 23:15:17 By : sakuraei
 


 

No. 4



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



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


ขอขอบคุณมากนะครับ

แต่ผมได้ทดลองแล้วนะครับยังพบปัญหายังไม่ได้เลยครับ
ดด

โค๊ดนี้ครับ

Code (SQL)

select t1.id_post,t1.topic,t2.id_comment,t2.timecom
from data_board t1 left join data_comment t2 using(id_post)
where concat(timecom,':',id_post) in (select concat(max(timecom),':',id_post) from data_comment group by id_post order by timecom desc)
order by t1.id_post,timecom desc 



ประวัติการแก้ไข
2015-07-06 00:11:30
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-06 00:09:49 By : gun101gun
 


 

No. 5



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



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


Code (SQL)
select t1.id_post,t1.topic,t2.id_comment,t2.timecom
from data_board t1 
inner join (
    select c1.* from data_comment c1 
    inner join ( 
         select id_post, max(timecom) maxtime 
         from data_comment group by id_post
    ) c2 on c1.id_post=c2.id_post and c1.timecom=c2.maxtime
) t2 using(id_post)
order by timecom desc,t1.id_post 

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


 

No. 6

Guest


จาก # 2
ลองย้าย condition จาก where ไป อยู่ใน on ครับ
หรือ หรือ ลองแบบนี้ครับ น่าจะได้.....มั้ง...เห่อๆ
Code (SQL)
select * from board
left join 
(select comment.* from comment 
	inner join (select max(id_comment) as m_id_comment,id_board  from comment group by id_board) as xx on xx.m_id_comment=comment.id_comment
) as yy on yy.id_board=board.id_board

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-06 07:34:45 By : ผ่านมา
 


 

No. 7



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



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


ตอบความคิดเห็นที่ : 4 เขียนโดย : gun101gun เมื่อวันที่ 2015-07-06 00:09:49
รายละเอียดของการตอบ ::
น่าจะลอง export sql มาทดสอบดูสักนิดน่ะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-06 07:38:25 By : cowboycnx
 


 

No. 8



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



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


ได้แล้วนะครับทำตามคุณChaidhanan ครับ
ขอบคุณทุกๆท่านมากครับ


ประวัติการแก้ไข
2015-07-06 14:36:33
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-06 14:34:23 By : gun101gun
 


 

No. 9



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



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


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-06 14:44:06 By : bunchuai
 

   

ค้นหาข้อมูล


   
 

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