มีข้อข้องใจเรื่องการใช้ INNER JOIN ครับ มีคำถาม 2 ข้อนะครับ ถ้าผมมีตารางอยู่ 4 ตาราง ดังนี้นะครับ
มีคำถาม 2 ข้อนะครับ
ถ้าผมมีตารางอยู่ 4 ตาราง ดังนี้นะครับ
permission, resource, actions, policies
มี field permission.permission_refer, resource.permission_refer,
actions.permission_refer, policies.permission_refer, เป็น FK
1. sql statement เป็นแบบนี้ถูกต้องไหมครับ
Code
SELECT
permission.serial_id,
resource.name,
actions.name,
FROM permission
INNER JOIN policies ON (
policies.permission_refer = permission.permission_refer
)
INNER JOIN actions ON (
actions.permission_refer = policies.permission_refer
)
INNER JOIN resource ON (
resources.permission_refer = actions.permission_refer
)
WHERE
permission.user_id = '11'
;
2.ถ้าผมเขียนถูกนะครับ ตรงการ INNER JOIN actions บางทีไอ้เจ้า ตาราง actions มันจะไม่มี permission_refer เหมือนกะชาวบ้านเค้า แล้วมันจะทำให้การ JOIN มีปัญหาไหมครับเพราะผมต้องใช้จากตาราง resource
รบกวนทุกท่านชี้แนะด้วยครับ
ขอบคุณครับTag : - - - -
Date :
2009-03-20 11:36:11
By :
zepherus
View :
2955
Reply :
8
ขอบคุณที่ชี้แนะครับ ผมมีข้อสงสัยเพิ่มอีกอย่าง
ทำไมต้อง a.serial_id เป็น ermission.serial_id เต็มๆอย่างนี้ได้ไหมครับ
Date :
2009-03-20 16:33:09
By :
zepherus
ได้ครับแต่ว่า การเขียน code จะดูง่ายกว่า การเขียนประโยคเต็มๆ อ่ะครับ
Date :
2009-03-20 16:41:10
By :
dr.website
อ๋อ มันมีประโยชน์อย่างนี้นี่เอง
Date :
2009-03-20 16:42:17
By :
zepherus
ถ้า permission_refer ใน Actions ไม่มี หรือไม่เหมือนกับ permission_referใน permission
Transection นั้น ก็จะหายไปครับ สำหรับ INNER JOIN
แต่ถ้าเราอยากรู้ว่า Transection ไหน หายไป เราลองใช้ Left OUTER JOIN ดูนะครับ
จะขึ้น NULL ขึ้นมาสำหรับ Transection ที่ ไม่เท่ากัน
Date :
2009-05-04 12:07:36
By :
taobsd
Date :
2009-05-05 17:33:07
By :
kanowan
Date :
2009-09-04 11:31:21
By :
0213645
ขอบคุณ คุณ [email protected] ที่ให้ความรู้
พระเจ้าอวยพร
Date :
2010-01-21 03:27:39
By :
sAcIw
Load balance : Server 03