คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
condition #1. มาแค่ type A อย่างเดียวก็ได้ หรือ
SELECT id FROM sport_test WHERE test_type = 'A'
=1
condition #2. ต้องมาทั้ง A และ B หรือ (A intersect B)
SELECT id FROM sport_test WHERE test_type = 'A'
AND id IN (SELECT id FROM sport_test WHERE test_type = 'B')
= 1, 2
condition #3. ต้องมาทั้ง C และ D (C intersect D)
SELECT id FROM sport_test WHERE test_type = 'C'
AND id IN (SELECT id FROM sport_test WHERE test_type = 'D')
= 3
ผมต้องเขียนคำสั่ง Query อย่างไรครับ ซึ่งID ที่ควรจะออกมาตามเงื่อนไขดังกล่าวคือ
1, 2 และ 3 โดย 4 จะไม่ออกเพราะ มีแค่ type C
union 1,2,3 ได้ id แล้วจะไปทำอะไรต่อก็ได้
SELECT
*
FROM
sport_test
WHERE
id IN (
-- condition 1 = A
SELECT id FROM sport_test WHERE test_type = 'A'
UNION
-- condition 2 = A intersect B
(
SELECT id FROM sport_test WHERE test_type = 'A'
AND id IN (SELECT id FROM sport_test WHERE test_type = 'B')
)
UNION
-- condition 3 = C intersect D
(
SELECT id FROM sport_test WHERE test_type = 'C'
AND id IN (SELECT id FROM sport_test WHERE test_type = 'D')
)
);
SELECT id FROM sport_test WHERE test_type = 'A'
=1
condition #2. ต้องมาทั้ง A และ B หรือ (A intersect B)
SELECT id FROM sport_test WHERE test_type = 'A'
AND id IN (SELECT id FROM sport_test WHERE test_type = 'B')
= 1, 2
condition #3. ต้องมาทั้ง C และ D (C intersect D)
SELECT id FROM sport_test WHERE test_type = 'C'
AND id IN (SELECT id FROM sport_test WHERE test_type = 'D')
= 3
ผมต้องเขียนคำสั่ง Query อย่างไรครับ ซึ่งID ที่ควรจะออกมาตามเงื่อนไขดังกล่าวคือ
1, 2 และ 3 โดย 4 จะไม่ออกเพราะ มีแค่ type C
union 1,2,3 ได้ id แล้วจะไปทำอะไรต่อก็ได้
SELECT
*
FROM
sport_test
WHERE
id IN (
-- condition 1 = A
SELECT id FROM sport_test WHERE test_type = 'A'
UNION
-- condition 2 = A intersect B
(
SELECT id FROM sport_test WHERE test_type = 'A'
AND id IN (SELECT id FROM sport_test WHERE test_type = 'B')
)
UNION
-- condition 3 = C intersect D
(
SELECT id FROM sport_test WHERE test_type = 'C'
AND id IN (SELECT id FROM sport_test WHERE test_type = 'D')
)
);
แสดงความคิดเห็น
ขอสอบการเขียนคิวรี่ Mysql ครับ
-------------------------
ID | Age| Test_type
-------------------------
1 | 15 | A
1 | 15 | C
2 | 18 | A
2 | 18 | B
2 | 18 | C
3 | 20 | C
3 | 20 | D
4 | 19 | C
ผมอยากทราบว่า มี ID ใดบ้างที่เข้าทดสอบครบตามประเภท(type_test) ที่กำหนด
คือ..
1. มาแค่ type A อย่างเดียวก็ได้ หรือ
2. ต้องมาทั้ง A และ B หรือ
3. ต้องมาทั้ง C และ D
ผมต้องเขียนคำสั่ง Query อย่างไรครับ ซึ่งID ที่ควรจะออกมาตามเงื่อนไขดังกล่าวคือ
1 , 2 และ 3 โดย 4 จะไม่ออกเพราะ มีแค่ type C
ขอบคุณมากๆครับ