 |
|
|
 |
 |
|
ต้อง join ตารางค่ะ ถ้าข้อมุลมาจาก 3 ตาราง
|
 |
 |
 |
 |
Date :
2017-07-20 08:26:34 |
By :
Th@iDev |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SELECT ........... //ของคุณ
FROM stock_d.bill_out /// จากตางรางของคุณ
LEFT JOIN stock_d.type ON type.TypeID = bill_out.TypeID
/// stock_d.type = ชื่อ ฐานข้อมูล . ชื่อตาราง type.TypeID = ชื่อตาราง . ID ตาราง bill_out.TypeID = จากตางรางของคุณ . ID ตาราง ที่เชื่อมหากัน
LEFT JOIN stock_d.admin ON bill_id.AdminID = admin.AdminID
/// จะ Join กัน 3-5 ตารางก็ได้ รูปแบบอันเดียวกัน
WHERE (bill_id.Date BETWEEN '$DateStart1' AND '$DateEnd1') //// เงื่อนไขอื่นๆ
AND (bill_id.DeptID = '$DeptID') //// เงื่อนไขอื่นๆ
AND (bill_id.StatusBill = 'Y') //// เงื่อนไขอื่นๆ
ORDER BY bill_id.BillNo,bill_id.Date,bill_out.ProductID ASC //// เงื่อนไขอื่นๆ
จขกท ผมยกตัวอย่างแบบ ง่ายสั้นๆ
--------------------------------------------
SQL แบบเต็มๆ
Code (SQL)
SELECT bill_out.BillNo,
bill_out.ProductID,
bill_out.Name,
bill_out.NameLao,
bill_out.QTY,
bill_out.Price,
bill_out.Result,
IF(bill_out.CurrencyID=1,bill_out.Result,0) AS KIP,
IF(bill_out.CurrencyID=2,bill_out.Result,0) AS BATH,
IF(bill_out.CurrencyID=3,bill_out.Result,0) AS USD,
bill_id.Date,
bill_id.DeptID,
bill_id.AdminID,
bill_id.DeptID,
bill_id.DivisionID,
bill_id.Sno,
type.TypeID,
type.TypeName,
admin.CodeID,
admin.AdminID,
admin.AdminName,
FROM stock_d.bill_out
LEFT OUTER JOIN stock_d.bill_id ON bill_out.BillNo = bill_id.BillNo
LEFT OUTER JOIN stock_d.type ON type.TypeID = bill_out.TypeID
LEFT OUTER JOIN stock_d.admin ON bill_id.AdminID = admin.AdminID
WHERE (bill_id.Date BETWEEN '$DateStart1' AND '$DateEnd1')
AND (bill_id.DeptID = '$DeptID')
AND (bill_id.StatusBill = 'Y')
ORDER BY bill_id.BillNo,bill_id.Date,bill_out.ProductID ASC
------------------
|
ประวัติการแก้ไข 2017-07-20 13:16:59
 |
 |
 |
 |
Date :
2017-07-20 09:02:53 |
By :
Bouasavanh HararRock |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าเชื่อมต่อ 3 ตาราง แบบนี้ใช่มั้ยครับ มันขึ้น error ครับ
ERROR : #1066 - Not unique table/alias: 'employees' // error แบบนี้ครับ ไม่เข้าใจเหมือนกัน ว่าเพราะอะไร
Code (SQL)
SELECT emp_leaved.EMP_ID,
emp_leaved.EMPL_START,
emp_leaved.EMPL_STOP,
emp_leaved.EMPL_REMARK,
emp_leaved.Filesname,
employees.EMP_PNAME,
employees.EMP_FNAME,
employees.EMP_LNAME,
leave_name.LEV_NAME // ส่วนนี้ ใช้ SELECT * แล้วก็ไม่ผ่าน
FROM leave_request.emp_leaved, // ชื่อฐานข้อมูล. ตารางในการค้นหา มี 3 ตาราง ครับ
leave_request.employees,
leave_request.eave_name
LEFT OUTER JOIN leave_request.employees ON employees.EMP_ID = emp_leaved.EMP_ID
LEFT OUTER JOIN leave_request.emp_leaved ON emp_leaved.LEV_ID = leave_name.LEV_ID // left outer join 3 ตาราง ใช้แค่ 2 เงื่อนไข แบบนี้ถูกต้องมั้ย ครับ
WHERE( '2017-07-20' >= emp_leaved.EMPL_START AND '2017-07-21' <= emp_leaved.EMPL_STOP ) OR ( emp_leaved.EMPL_START BETWEEN '2017-07-20' AND '2017-07-21' ) OR ( emp_leaved.EMPL_STOP BETWEEN '2017-07-20' AND '2017-07-21' ) ORDER BY emp_leaved.EMPL_START ASC // เงื่อนไขนี้ ผมทำผ่านแล้วครับ ไม่ error แต่พอจะต้องการ เชื่อมตาราง อีก 2 ตาราง แล้วเกิด error ครับ
ขอบคุณมากครับ
|
 |
 |
 |
 |
Date :
2017-07-20 10:34:28 |
By :
1576663815719132 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
JOIN ไม่ถูกครับ ลองดูดีๆ
- Table employees มันไม่รู้จัก
- เวลา SELECT ต้องเอา ทุกๆ ID ของทุกๆ Table ที่เกี่ยวข้องกัน
- ใช้ LEFT JOIN เฉยๆก็ได้ (ที่ใช้ LEFT OUTER JOIN คือข้อมูลผมมันเยอะ ก็เลยใช้)
- ดู Code ดีๆ ง่ายๆ เดี่ยวได้เอง
|
 |
 |
 |
 |
Date :
2017-07-20 11:09:21 |
By :
Bouasavanh HararRock |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@HaraRock
ได้แล้วครับ ขอบคุณมากครับ
-----------------------------------------------
เชื่อม 3 ตารางแรก โดยการใช้ Create view ครับ
พอได้ ก็ แค่เปลี่ยน ชื่อตาราง เป็น V_Create view ครับ
แล้ว SQL ก็เป็นแบบเดิมตั้งแต่แรก เลยครับ
|
 |
 |
 |
 |
Date :
2017-07-20 11:44:39 |
By :
Ekachai Duangjai |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
(y)
|
 |
 |
 |
 |
Date :
2017-07-20 12:37:22 |
By :
Bouasavanh HararRock |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2017-07-21 10:17:57 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|