 |
|
รบกวนสอบถามเรื่องการใช้ SQL ในการดึงข้อมูลตามเงื่อนไขต่อไปนี้ครับ |
|
 |
|
|
 |
 |
|
ขออธิบายเป็นรูปภาพนะครับ เขียนกลัวว่าจะสื่อสารไม่เข้าใจ
Code (SQL)
SELECT MasterOfDesign.masterOfSetCode, DesignOfSketching.designProductOfSampleCode, SUBSTRING(DesignOfSketching.designProductOfSampleCode, 7, 1) AS codeOfProduct,
DetailOfDesign.detailPageOfNo, DesignOfSketching.designModelOfNumber
FROM MasterOfDesign
LEFT JOIN DetailOfDesign on DetailOfDesign.detailMasterOfDesignId = MasterOfDesign.Id
LEFT JOIN DesignOfSketching on DesignOfSketching.designDetailOfDesignId = DetailOfDesign.Id
WHERE (MasterOfDesign.masterOfSetCode = 'PN161A' OR MasterOfDesign.masterOfSetCode = 'PN161B') AND SUBSTRING(DesignOfSketching.designProductOfSampleCode, 7, 1) = '2'
ORDER BY MasterOfDesign.masterOfSetCode ASC, DetailOfDesign.detailPageOfNo ASC, DesignOfSketching.designModelOfNumber ASC
จากโค๊ด ได้ผลลัพธ์ ดังนี้ครับ

แต่สิ่งที่ผมต้องการคือ ใช้ column name ที่ชื่อ detailPageOfNo ในเงื่อนไข WHERE ด้วย โดยสมมุติว่า detailPageOfNo = 3 และ masterOfSetCode = 'PN161A' AND masterOfSetCode = 'PN161B'
โดยต้องการได้ผลลัพธ์ตามนี้ ครับ

จากรูปนี้ ผมต้องเพิ่มเงื่อนไขแบบไหนถึงจะได้ผลลัพธ์ตามรูปนี้ครับ?
Tag : .NET, Ms SQL Server 2012
|
|
 |
 |
 |
 |
Date :
2016-07-27 10:21:30 |
By :
cre_kiwsan |
View :
957 |
Reply :
12 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
AND detailPageOfNo = '3' เติมต่อไป หลัง
AND SUBSTRING(DesignOfSketching.designProductOfSampleCode, 7, 1) = '2'
ลองดูหรือยังครับ
|
 |
 |
 |
 |
Date :
2016-07-27 10:38:04 |
By :
Dragons_first |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
WHERE (MasterOfDesign.masterOfSetCode = 'PN161A' OR MasterOfDesign.masterOfSetCode = 'PN161B')
อยากได้
masterOfSetCode = 'PN161A' AND masterOfSetCode = 'PN161B'
งงเช่นกัน ว่าทำไมไม่ใช้ AND
|
 |
 |
 |
 |
Date :
2016-07-27 10:41:39 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมเองก็ไม่ถนัด SQL ครับ
ลองตัด WHERE กับ ORDER BY เหลือ JOINT แล้วดูข้อมูลก่อนครับ
|
 |
 |
 |
 |
Date :
2016-07-27 11:48:22 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แต่ง่ายสุดก็ใช้ WIZARD ครับ เร็วดี
|
 |
 |
 |
 |
Date :
2016-07-27 11:51:10 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
masterOfSetCode in ('PN161A', 'PN161B') หรือเปล่า
มันคงใช้ and สำหรับ field เดียวกันไม่ได้
a = 1 and a = 2 แบบนี้ ยังไงก็ไม่เข้าเคส
Code (SQL)
WHERE
(MasterOfDesign.masterOfSetCode in ('PN161A', 'PN161B')) AND
(
SUBSTRING(DesignOfSketching.designProductOfSampleCode, 7, 1) = '2'
or MasterOfDesign.detailPageOfNo=3
)
|
ประวัติการแก้ไข 2016-07-27 12:10:01 2016-07-27 12:11:14
 |
 |
 |
 |
Date :
2016-07-27 12:03:48 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วนะครับ ขอบคุณทุกคน มากครับๆ ^____^
Code (SQL)
WHERE (MasterOfDesign.masterOfSetCode = 'PN161A' OR (MasterOfDesign.masterOfSetCode = 'PN161B' AND DetailOfDesign.detailPageOfNo <= 3))
AND SUBSTRING(DesignOfSketching.designProductOfSampleCode, 7, 1) = '2'
|
 |
 |
 |
 |
Date :
2016-07-27 12:06:13 |
By :
cre_kiwsan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Where masterOfSetCode In('PN161A','PN161B')
And detailPageOfNo=(Case When masterOfSetCode='PN161B' Then 3 Else detailPageOfNo End)
**อธิบาย
1. masterOfSetCode In('PN161A','PN161B')
**ให้เอาเฉพาะ masterOfSetCode ='PN161A' or 'PN161B' เท่านั้น
2. detailPageOfNo=(Case When masterOfSetCode='PN161B' Then 3 Else detailPageOfNo End)
**ถ้า masterOfSetCode ='PN161B' ให้เช็คเพิ่ม detailPageOfNo=3
**ลองดูครับ
|
 |
 |
 |
 |
Date :
2016-08-04 18:30:54 |
By :
thaweewong |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|