สมัครสมาชิก
 

characters found after end of SQL statement



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

02 ธ.ค. 62 , 08:30:32
อ่าน 131 ครั้ง

Mercury

characters found after end of SQL statement
« เมื่อ: 02 ธ.ค. 62 , 08:30:32 »
           
ทดลองทำ Union Query แต่ติดปัญหาเวลาเปิดขึ้น Error ดังภาพค่ะ




อันนี้เป็น SQL ที่ใช้ค่ะ

โค๊ด: [Select]
SELECT [Place - Boxes (In)].Place, Nz([SumOfBoxin])+0 AS [จำนวนรับเข้า (ลัง-ห่อ)], Nz([SumOfBoxout])+0 AS [จำนวนจ่ายออก (ลัง-ห่อ)], [จำนวนรับเข้า (ลัง-ห่อ)]-[จำนวนจ่ายออก (ลัง-ห่อ)] AS [จำนวนคงเหลือ (ลัง-ห่อ)], Nz([SumOfPCSin])+0 AS [จำนวนเศษรับเข้า (ชิ้น)], Nz([SumOfPCSout])+0 AS [จำนวนเศษจ่ายออก (ชิ้น)], [จำนวนเศษรับเข้า (ชิ้น)]-[จำนวนเศษจ่ายออก (ชิ้น)] AS [จำนวนเศษคงเหลือ (ชิ้น)]
FROM (([Place - Boxes (In)] LEFT JOIN [Place - Boxes (out)] ON [Place - Boxes (In)].Place = [Place - Boxes (out)].Place) LEFT JOIN [Place - Pcs (In)] ON [Place - Boxes (In)].Place = [Place - Pcs (In)].Place) LEFT JOIN [Place - Pcs (out)] ON [Place - Boxes (In)].Place = [Place - Pcs (out)].Place;U

UNION SELECT T1.*, (select sum(T3.Inboxes) from [In] as T3 where T3.place = T1.place) AS [Sum]
FROM [In] AS T1

WHERE (((T1.date)=(select max(T2.[date]) from [In] as T2 where T2.place = T1.place)));




:dizzy:
 

02 ธ.ค. 62 , 09:12:33
ตอบกลับ #1

chai

: characters found after end of SQL statement
« ตอบกลับ #1 เมื่อ: 02 ธ.ค. 62 , 09:12:33 »
ลองเปลี่ยนการตั้งชื่อฟิวด์ที่ไม่มีเครื่องหมาย - หรือ ใช้ Underscore _ แทน หรือใช้ภาษาอังกฤษดูครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

02 ธ.ค. 62 , 09:35:03
ตอบกลับ #2

PNR

: characters found after end of SQL statement
« ตอบกลับ #2 เมื่อ: 02 ธ.ค. 62 , 09:35:03 »
SELECT [Place - Boxes (In)].Place, Nz([SumOfBoxin])+0 AS [จำนวนรับเข้า (ลัง-ห่อ)], Nz([SumOfBoxout])+0 AS [จำนวนจ่ายออก (ลัง-ห่อ)], [จำนวนรับเข้า (ลัง-ห่อ)]-[จำนวนจ่ายออก (ลัง-ห่อ)] AS [จำนวนคงเหลือ (ลัง-ห่อ)], Nz([SumOfPCSin])+0 AS [จำนวนเศษรับเข้า (ชิ้น)], Nz([SumOfPCSout])+0 AS [จำนวนเศษจ่ายออก (ชิ้น)], [จำนวนเศษรับเข้า (ชิ้น)]-[จำนวนเศษจ่ายออก (ชิ้น)] AS [จำนวนเศษคงเหลือ (ชิ้น)]
FROM (([Place - Boxes (In)] LEFT JOIN [Place - Boxes (out)] ON [Place - Boxes (In)].Place = [Place - Boxes (out)].Place) LEFT JOIN [Place - Pcs (In)] ON [Place - Boxes (In)].Place = [Place - Pcs (In)].Place) LEFT JOIN [Place - Pcs (out)] ON [Place - Boxes (In)].Place = [Place - Pcs (out)].Place;U

UNION SELECT T1.*, (select sum(T3.Inboxes) from [In] as T3 where T3.place = T1.place) AS [Sum]
FROM [In] AS T1

WHERE (((T1.date)=(select max(T2.[date]) from [In] as T2 where T2.place = T1.place)));



ลบตรงสีแดงออกครับ
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

02 ธ.ค. 62 , 11:49:49
ตอบกลับ #3

Mercury

: characters found after end of SQL statement
« ตอบกลับ #3 เมื่อ: 02 ธ.ค. 62 , 11:49:49 »
characters found after end of SQL statement หายไปแล้วค่ะ

แต่ขึ้นอันนี้มาแทนค่ะ

:dizzy:
 

02 ธ.ค. 62 , 12:33:31
ตอบกลับ #4

PNR

: characters found after end of SQL statement
« ตอบกลับ #4 เมื่อ: 02 ธ.ค. 62 , 12:33:31 »
ส่งตัวอย่างมาดูครับ
:meaw: :grin: :shout:
 

02 ธ.ค. 62 , 13:24:35
ตอบกลับ #5

Mercury

: characters found after end of SQL statement
« ตอบกลับ #5 เมื่อ: 02 ธ.ค. 62 , 13:24:35 »
คิวรี่ที่จะ Union 2 ตัวค่ะ

:dizzy:
 

02 ธ.ค. 62 , 14:09:29
ตอบกลับ #6

PNR

: characters found after end of SQL statement
« ตอบกลับ #6 เมื่อ: 02 ธ.ค. 62 , 14:09:29 »
Sql 2 ชุดไม่ได้สอดคล้องกันเลยที่จะทำ Union Query เพราะ Sql query warehouse - จำนวนสินค้า นั้นมี 7 คอลัมน์
แต่ Query warehouse - รหัสสินค้า มีแค่ 3 คอลัมน์เท่านั้น

1.ผมเลยสงสัยว่าคุณอยากทำการรวมไปเพื่ออะไร ลักษณะผลลัพธ์ที่ต้องการเป็นแบบไหน
2. จากโค้ด
โค๊ด: [Select]
SELECT T1.*, (select sum(T3.Inboxes) from [In] as T3 where T3.place = T1.place) AS [Sum]
FROM [In] AS T1

WHERE (((T1.date)=(select max(T2.[date]) from [In] as T2 where T2.place = T1.place)));

นี้ ถ้าตัด T1.* ออกก็จะได้ ฟิลล์ Sum มา 1 คอลัมน์ คุณอยากเอาฟิลล์นี้ไปวางไว้ตรงไหนเพราะอาจจะไม่ใช่การ Union แล้วแต่อาจจะเป็นอย่างอื่น

ลองสร้างตัวอย่างผลลัพธ์ ใน Excel ว่าต้องการผลลัพธ์แบบไหน เดี่ยวผมทำให้
« แก้ไขครั้งสุดท้าย: 02 ธ.ค. 62 , 14:19:34 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

02 ธ.ค. 62 , 15:48:43
ตอบกลับ #7

Mercury

: characters found after end of SQL statement
« ตอบกลับ #7 เมื่อ: 02 ธ.ค. 62 , 15:48:43 »
ประมาณนี้ค่ะ .__.

แก้ไขเพิ่มเติม : ที่ไม่ได้ใช้ Funtion Last เนื่องจากเวลาใช้งานจริงคนที่ทำการบันทึกข้อมูลอาจไม่ได้เรียงการบันทึกตามวันที่ค่ะ
« แก้ไขครั้งสุดท้าย: 02 ธ.ค. 62 , 16:41:41 โดย Mercury »
:dizzy:
 

03 ธ.ค. 62 , 08:01:54
ตอบกลับ #8

PNR

: characters found after end of SQL statement
« ตอบกลับ #8 เมื่อ: 03 ธ.ค. 62 , 08:01:54 »
ลองสร้างคิวรี่ ใส่ sql นี้เข้าไปแล้วดูผลลัพธ์นะครับ
ผมหา ตาราง Customer , Product , Gcas ไม่เจอเลยไม่ได้เพิ่มส่วนนี้ให้นะครับ
ไม่รู้ผมเข้าใจถูกไหมนะครับ

คือ
1. หา Place โดยการ GroupBy ให้เหลือ Place 1 ตัว ถ้าซ้ำกันก็รวมกันให้ไม่ซ้ำ
2. ส่วนการหา Inhouse (จากวันที่ล่าสุด) นำคิวรี่ warehouse - รหัสสินค้า มาเชื่อม ความสัมพันธ์ กับ warehouse - จำนวนสินค้า ตรง Place
แล้วดึง Inhouse มาแสดง

แต่ กรณีที่ Place เดียวกัน แต่มี INHOUSE ไม่เหมือนกันทำยังไงครับ
« แก้ไขครั้งสุดท้าย: 03 ธ.ค. 62 , 08:32:46 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

03 ธ.ค. 62 , 08:29:41
ตอบกลับ #9

Mercury

: characters found after end of SQL statement
« ตอบกลับ #9 เมื่อ: 03 ธ.ค. 62 , 08:29:41 »
ได้แล้วค่ะ *-*
ขอบคุณมากๆเลยค่ะ


:love: :want:

แล้วถ้าจะเพิ่มพวก Product เองสามารถกดเพิ่มตรงนี้เข้าไปได้เลยมั้ยคะ


:dizzy:
 

03 ธ.ค. 62 , 08:42:22
ตอบกลับ #10

PNR

: characters found after end of SQL statement
« ตอบกลับ #10 เมื่อ: 03 ธ.ค. 62 , 08:42:22 »
มีอีกแบบ แก้ปัญหา place ซ้ำกันคับ

ถ้าถูก Query3 ต้องมี record = 2446 นะครับ
เพราะ BoxIn ของคุณ คือ 2446

อ้างถึง
แล้วถ้าจะเพิ่มพวก Product เองสามารถกดเพิ่มตรงนี้เข้าไปได้เลยมั้ยคะ

เพิ่มเองได้ แต่ต้องไปกำหนด Max วันที่ ของสินค้านั้นๆ ด้วยนะครับถึงจะได้ยอดที่ถูกต้อง
(ใช้ Max นะครับ ไม่ใช่ใช้ Last นะครับ)
« แก้ไขครั้งสุดท้าย: 03 ธ.ค. 62 , 08:59:12 โดย PNR »
:meaw: :grin: :shout:
 

03 ธ.ค. 62 , 09:11:54
ตอบกลับ #11

Mercury

: characters found after end of SQL statement
« ตอบกลับ #11 เมื่อ: 03 ธ.ค. 62 , 09:11:54 »
ลองสร้างคิวรี่ ใส่ sql นี้เข้าไปแล้วดูผลลัพธ์นะครับ
ผมหา ตาราง Customer , Product , Gcas ไม่เจอเลยไม่ได้เพิ่มส่วนนี้ให้นะครับ
ไม่รู้ผมเข้าใจถูกไหมนะครับ

คือ
1. หา Place โดยการ GroupBy ให้เหลือ Place 1 ตัว ถ้าซ้ำกันก็รวมกันให้ไม่ซ้ำ
2. ส่วนการหา Inhouse (จากวันที่ล่าสุด) นำคิวรี่ warehouse - รหัสสินค้า มาเชื่อม ความสัมพันธ์ กับ warehouse - จำนวนสินค้า ตรง Place
แล้วดึง Inhouse มาแสดง

แต่ กรณีที่ Place เดียวกัน แต่มี INHOUSE ไม่เหมือนกันทำยังไงครับ




กรณี Place เดียวกันแต่คนละรหัสสินค้า จะเลือกให้ตารางนำเฉพาะตัวสินค้าจากวันที่ล่าสุดมาแสดงค่ะ เพราะ 1 สถานที่จะเก็บได้เพียง 1 รหัสสินค้า
คือ ถ้ามีสินค้าใหม่เข้ามาสินค้าที่อยู่ก่อนหน้าจะถูกจ่ายออกจนหมดหรือถูกย้ายไปเก็บที่สถานที่อื่นๆแทนค่ะ
:dizzy:
 

03 ธ.ค. 62 , 09:19:49
ตอบกลับ #12

PNR

: characters found after end of SQL statement
« ตอบกลับ #12 เมื่อ: 03 ธ.ค. 62 , 09:19:49 »
ผมแก้ตรงนี้ให้แล้วครับ 1H060001622 จะแสดง ใน Place Am328 ถูกไหมคับ
1H060001620 จะไม่นำมาแสดง
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

03 ธ.ค. 62 , 09:38:02
ตอบกลับ #13

Mercury

: characters found after end of SQL statement
« ตอบกลับ #13 เมื่อ: 03 ธ.ค. 62 , 09:38:02 »
ขอโทษค่ะอาจารย์
เพิ่งเข้าใจว่ามีกรณีที่เป็นคนละรหัสแล้วรวมอยู่สถานที่เดียวกันด้วย
ถ้ามีการรับเข้ามาในวันที่เดียวกันแบบกรณีนี้จะต้องแสดงทั้ง 2 รหัสสินค้าค่ะ

แล้วกรณีนี้สามารถทำให้ตรงช่องที่เป็นผลรวมที่วงไว้ ขึ้นแค่เฉพาะจำนวนของสินค้า ณ สถานที่นั้น ๆ ได้ไหมคะ

เช่น สถานที่ X1 มีสินค้า A มีจำนวน 20, สินค้า B จำนวน 30 (โดยทั้งสองตัวมีการรับเข้ามาในวันที่เดียวกัน)



:dizzy:
 

03 ธ.ค. 62 , 13:39:52
ตอบกลับ #14

PNR

: characters found after end of SQL statement
« ตอบกลับ #14 เมื่อ: 03 ธ.ค. 62 , 13:39:52 »
สามารถทำได้อยู่แล้วครับ แต่ Place จะมีการซ้ำกันตามจำนวนของสินค้าที่แสดง ของแต่ละ รหัสนะครับ

เช่น place A   รหัสสินค้า A = 10 .............ฯลฯ....................
      place A   รหัสสินค้า B = 5  ..............ฯลฯ...................

เป็นต้น
วิธีการ หา max วันที่ให้ได้แล้ว เอา สินค้าทุกตัวของวันที่นั้นมาแสดงทั้งหมด (แต่ place จะซ้ำกันตามจำนวนสินค้านะครับ)
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

03 ธ.ค. 62 , 14:49:23
ตอบกลับ #15

Mercury

: characters found after end of SQL statement
« ตอบกลับ #15 เมื่อ: 03 ธ.ค. 62 , 14:49:23 »
Place สามารถขึ้นซ้ำกันได้ถ้าเป็นวันที่เดียวกันค่ะ

แต่ต้องทำยังไงให้ช่องที่คำนวณขึ้นแค่ผลการคำนวณของแต่ละรหัสในแต่ละสถานที่คะ
เพราะว่าตอนนี้ Record สถานที่จะรวมจำนวนทั้งหมดที่อยู่ในสถานที่นั้นๆ ค่ะ
« แก้ไขครั้งสุดท้าย: 03 ธ.ค. 62 , 15:33:48 โดย Mercury »
:dizzy:
 


บอร์ดเรียนรู้ Access สำหรับคนไทย