สอบถามการเขียน SQL SELECT ซ้อน SELECT โดยหาจํานวนรายการที่ มีรายสินค้าเป็น0 ทั้งหมดครับ ถึงนับเป็น 1
Code (SQL)
SELECT
tb1.`CODE`,
tb2.QTY,
Count(tb1.`CODE`) AS Total
FROM
tb1
INNER JOIN tb2 ON tb1.ID = tb2.TB1_ID
WHERE
tb2.QTY = 0
GROUP BY
tb1.`CODE`
Date :
2013-12-07 12:02:45
By :
Krungsri
ใช้ LEFT JOIN, GROUP BY ID, HAVING
แล้วหาผลรวม ที่เป็น 0 ครับ
กรณีที่ต้องการทุกรายการในตาราง 1 ต้องหาผลรวมที่เป็น NULL ด้วย
Date :
2013-12-07 12:07:27
By :
{Cyberman}
แล้วถ้าเกิน ให้ตรวจสอบ ID ของ TB1 ที่มีรายการ TB2 ที่มี QTY เท่ากับ 0 และ ไม่เท่ากับ 0 จะทํายังไงครับ
ต้องมี QTY เท่ากับ 0 และ ไม่เท่ากับ 0
Date :
2013-12-07 14:02:02
By :
kenghockey
รูปแบบผลลัพธ์ประมาณไหนอะคับ
Date :
2013-12-07 18:51:49
By :
Krungsri
ผลลัพธ์ที่จะออกมาก คือจํานวน ID ของ TB1 ครับ
คือ TB1 คือประเภทสินค้า และ TB2 คือชื่อรายการสินค้าครับ
ซึ่งรายการจะเก็บ FK เพื่ออยากอ้างอิงถึงประเภทครับ
จากตัวอย่างข้างล่างที่ TB2 ฟิล TB1_ID คือ ID ประเภทจะเป็นว่า
ประเภทสินค้า ID 1 ของ TB1 จะมี2 รายการ
รายที่1 QTY = 0
รายที่2 QTY = 10
คือตัวนี้จะไม่นับเพราะยังมีรายการ2 ไม่เท่ากับ0
ถ้าจะนับต้อง เป็น 0 ทั้ง2 รายการครับ
นับหมายถึงนับ ID ของประเภทคือ TB1 ที่มีรายการสินค้า QTY = 0 ทุกรายการ
Code (PHP)
TB1
ID | CODE
1 | XXX-00001
2 | XXX-00002
3 | XXX-00003
4 | XXX-00004
5 | XXX-00005
------------------------------------------------------------------------------
TB2
ID | TB1_ID | QTY
1 | 1 | 0
2 | 1 | 10
3 | 2 | 0
4 | 3 | 0
5 | 4 | 0
6 | 5 | 15
7 | 5 | 30
8 | 5 | 0
9 | 5 | 0
10 | 5 | 0
ประวัติการแก้ไข 2013-12-07 19:04:14
Date :
2013-12-07 19:03:53
By :
kenghockey
Code (SQL)
SELECT
tb1.`CODE`,
tb2.QTY
FROM
tb2
INNER JOIN tb1 ON tb1.ID=tb2.TB1_ID
WHERE tb2.TB1_ID NOT IN(SELECT DISTINCT tb2.TB1_ID FROM tb2 WHERE tb2.QTY<>0)
Date :
2013-12-07 21:10:27
By :
Krungsri
ถ้าเป็น > 0 แบบนี้จะเป็นอย่างที่ผมต้องการ แต่จะติดปัญหาว่า
ถ้า ID TB1 มี3 รายการสินค้า แล้วมีรายการ1 ที่มีค่ามากกว่า0
มันจะดึงออกมาด้วย โดยตามจริงผมจะไม่ให้มันดึงออกมาเพราะอีก 2 รายการที่เหลือยังเป็น 0 อยู่
Code (PHP)
SELECT DISTINCT tb2.TB1_ID FROM tb2 WHERE tb2.QTY > 0
จากตัวอย่างด้านล่างดึง TB1_ID = 2 มาอย่างเดียวเพราะ TB1_ID = 2 รายการทั้ง2 รายการมีค่าทั้งหมด
ไม่มีรายการใดเป็น 0
Code (PHP)
TB2
ID | TB1_ID | QTY
1 | 1 | 0
2 | 1 | 10
3 | 1 | 0
4 | 2 | 10
5 | 2 | 15
ประวัติการแก้ไข 2013-12-08 07:57:03 2013-12-08 07:58:11 2013-12-08 07:58:22
Date :
2013-12-08 07:54:54
By :
kenghockey
Code (SQL)
SELECT
*
FROM
tb2
WHERE
tb2.QTY > 0
AND tb2.TB1_ID NOT IN (
SELECT
DISTINCT tb2.TB1_ID
FROM
tb2
WHERE
tb2.QTY = 0
)
Date :
2013-12-08 09:27:24
By :
Krungsri
Load balance : Server 00