คำสั่ง sql แสดงข้อมูล 2 ตาราง แบบนี้จะเขียนยังไงดีครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา คำสั่ง sql แสดงข้อมูล 2 ตาราง แบบนี้จะเขียนยังไงดีครับ

คำสั่ง sql แสดงข้อมูล 2 ตาราง แบบนี้จะเขียนยังไงดีครับ

สวัสดีครับ พอดีปัญหาเรื่องการใช้sql แสดงผลข้อมูล 2 ตาราง ครับ ตาราง มี รายละเอียดดังนี้ครับ

#tb_user_account_member

id_user--------username-------password-----------email
1---------------------aaa---------------1234----------test1@test.com
2---------------------bbb---------------1234----------est2@test.com
3---------------------ccc----------------1234----------test3@test.com
4---------------------ddd---------------1234----------test4@test.com

#tb_approve_mail
(ref_id_user=อ้างอิงไอดีผู้ขออนุมัติ , approve_ref_id_user=อ้างอิงไอดีที่ผู้ขออนุมัติจะส่งจดหมายไปหา , status_approve 1=อนุมัติ 2=รออนุมัติ)

id_approve------ref_id_user-----approve_ref_id_user----status_approve
1-------------------------1-------------------------2-------------------------2
2-------------------------1-------------------------3-------------------------2
3-------------------------1-------------------------4-------------------------1
4-------------------------4-------------------------2-------------------------2
5-------------------------3-------------------------2-------------------------2
6-------------------------2-------------------------1-------------------------1

SELECT id_user, username, email, tb_approve_mail.* FROM tb_user_account ,tb_approve_mail WHERE tb_user_account.id_user=tb_approve_mail.approve_ref_id_user AND status_approve=2

id_approve-----ref_id_user---------username----status_approve
1----------------------------1---------------------bbb---------------(2)รออนุมัติ
2----------------------------1---------------------ccc----------------(2)รออนุมัติ
4----------------------------4---------------------bbb---------------(2)รออนุมัติ
5----------------------------3---------------------bbb---------------(2)รออนุมัติ

ปัญหาคือ จากโค๊ด sql ข้างต้น มันจะแสดง รายการที่รออนุมัติ status_approve=2 และชื่อ username ที่ผู้ขออนุมัติขอไป ซึ่งผมต้องการให้มันโชว์ username ของผู้อนุมัติด้วย(ref_id_user) ตรงนี้ต้องเขี่ยนคำสั่งแบบไหนครับ ผมลอง JOIN ดูแล้วก็รู้จะเขียนคำสั่งผิด ไม่รู้ว่าต้องเขียนแบบไหน

ขอบคุณครับ



Bouy22 30-01-2013 19:01:43

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1

 คิดว่าคำสั่งน่าจะถูกแล้ว โชว์ username ของ approve_ref_id_user

SELECT id_user, username, email, tb_approve_mail.* FROM tb_user_account ,tb_approve_mail WHERE tb_user_account.id_user=tb_approve_mail.approve_ref_id_user AND status_approve=2

 

โชว์ username ของ ref_id_user

SELECT id_user, username, email, tb_approve_mail.* FROM tb_user_account ,tb_approve_mail WHERE tb_user_account.id_user=tb_approve_mail.ref_id_userAND status_approve=2

 

 



ninenik 31-01-2013
 ความคิดเห็นที่ 2

คืออย่างงี้ครับ Ninenik

คือผมอยากให้มันโชว์ทั้ง

username approve_ref_id_user

และ

username ของ ref_id_user

แต่คำสั่งที่ผมเขียนนั้นมันแสดงเฉพาะของ approve_ref_id_user อ่ะครับ ผมลอง JOIN ลอง Subquery แล้วก็ Error เลยไม่รู้ว่าต้องเขียนยังไง

รบกวน Ninenik ลองดูให้หน่อยครับ แหะๆ  ตอนนี้ ที่ใช้อยู่คือ ผมให้มันคิวรี่

SELECT id_user, username, email, tb_approve_mail.* FROM tb_user_account ,tb_approve_mail WHERE tb_user_account.id_user=tb_approve_mail.approve_ref_id_user AND status_approve=2

จากนั้นค่อยมาคิวรี่หา
ref_id_user อีกที

SELECT id_user, username FROM tb_user_account WHERE id_user=$read[ref_id_user]

 



bouy22 31-01-2013 16:42
 ความคิดเห็นที่ 3

 ลอง select ซ้อน กันดู อาจจะได้ 

SELECT 
id_user, 
username, 
(
 SELECT username FROM tb_user_account c
 WHERE c.id_user=b.approve_ref_id_user
) as username_approve
email, 
tb_approve_mail.* 
FROM 
tb_user_account a,
tb_approve_mail b
WHERE 
b.status_approve=2
AND a.id_user=b.ref_id_user

 



Ninenik Narkdee 01-02-2013
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ