ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: saya559 ที่ 10 กันยายน 2015, 02:20:57



หัวข้อ: ต้องการ Select ข้อมูลโดยเลือกแสดงสถานะที่ต้องการ
เริ่มหัวข้อโดย: saya559 ที่ 10 กันยายน 2015, 02:20:57
รบกวนสอบถามค่ะ พอดีในฐานข้อมูล มีตารางที่เก็บ Batch 2 รูปแบบคือขึ้นต้นด้วยเลข 2,5 และจะมีสถานะ 1,2,3 ของแต่ละ Batch ค่ะ
สี่งที่ต้องการให้ข้อมูลแสดงคือ  ไม่ให้  Batch ที่ 2 แสดงสถานะ 1 แต่คงสถานะอื่นไว้ และ Batch 5 แสดงทั้ง 3 สถานะค่ะ
Script ที่เขียน
SELECT *
  FROM [KE_MMS].[dbo].[ETL_MMS2DMS_BATCH_STATUS]with (nolock)
  where batch_no not in
 (
 select batch_no from ETL_MMS2DMS_BATCH_STATUS with (nolock)
 where batch_no  not like '2%'and Status_Code <> '1'
 )
 and status_code in ('3','2')

แต่ปรากฏว่า Batch 5 ไม่ออกมาเลยค่ะ ต้องเพื่มเงื่อนไขอะไรอีกเหรือค่ะ รบกวนด้วยค่ะ  :wanwan017: :wanwan017:


หัวข้อ: Re: ต้องการ Select ข้อมูลโดยเลือกแสดงสถานะที่ต้องการ
เริ่มหัวข้อโดย: jubpas ที่ 10 กันยายน 2015, 08:27:32
SELECT *
  FROM [KE_MMS].[dbo].[ETL_MMS2DMS_BATCH_STATUS]with (nolock)
  where batch_no not in
 (
 select batch_no from ETL_MMS2DMS_BATCH_STATUS with (nolock)
where batch_no like '2%'and Status_Code <> '1'
 )
 
ไม่ต้องwhere เพิ่ม เพราะจะคงสถานอื่นไว้ และ5 แสดงหมด น่าจะได้ครับ  :wanwan044:


หัวข้อ: Re: ต้องการ Select ข้อมูลโดยเลือกแสดงสถานะที่ต้องการ
เริ่มหัวข้อโดย: ohmohm ที่ 10 กันยายน 2015, 19:00:56
ดูเหมือนจะใช้ Microsoft SQL Server นะครับ

SELECT *
  FROM [KE_MMS].[dbo].[ETL_MMS2DMS_BATCH_STATUS]with (nolock)
  where batch_no not in
 (
  select batch_no from ETL_MMS2DMS_BATCH_STATUS with (nolock)
  where batch_no like '2%' and Status_Code = '1'
 )

ผมใช้ = 1 หมายความว่า Batch ที่ 2 และสถานะ 1 ให้อยู่ใน sub-query ของพวกที่จะไม่แสดง
อันที่จริง ถ้า select แค่ตามที่ถามมา (ไม่เอาไปต่อยอดหรือดัดแปลงอย่างอื่น) ไม่ต้องใช้ sub-query (มี not in) ก็ได้นะครับ