 |
จำทำอย่างไรให้ query ดึงข้อมูลจากฐานข้อมูลตาราง A,B,C ไปใส่ฐานข้อมูลตาราง D ขอคำแนะนำทีครับ |
|
 |
|
|
 |
 |
|
สวัสดีครับ พอดีอยากจะขอคำแนะนำครับ
ผม query ดึงข้อมูลจากฐานข้อมูลตาราง A,B,C ไปใส่ฐานข้อมูลตาราง D
โดย กำหนดให้เงื่อน
SET @H_CODE = '00000';
SET @BEGIN_DATE = '20171001';
SET @END_DATE = '20180331';
ให้ @H_CODE เป็น PK ครับซึ่ง ผมมี @H_CODE ตั้งหมดหลายร้อยตัว
query ที่นำมารันดึงข้อมูลใส่มันดึงข้อมูลได้ทีล่ะตัว
อยากจะขอคำแนะนำว่าจะต้อง ปรับ query ยังไงให้สามารถใส่ @H_CODE ได้ที่ล่ะหลายๆตัวโดยที่ไม่ต้องมารัน @H_CODE ทีล่ะตัวเพื่อเก็บข้อมูลลงตางราง D ครับ
เช่น @H_CODE(00000,00001,00002,...) ครับ
อันนี้ query ส่วนหนึ่งครับ
Code (SQL)
SET @H_CODE = '00000';
SET @BEGIN_DATE = '20171001';
SET @END_DATE = '20180331';
DELETE FROM random_audit_opd WHERE HCODE = @H_CODE;
INSERT IGNORE INTO random_audit_opd (HCODE,PID,HN,DATE_SERV,DCODE)
SELECT * FROM (
(SELECT
service.HCODE,
service.PID,
service.HN,
service.DATE_SERV,
dnosis_op.DCODE
FROM
service
JOIN dnosis_op
ON service.HCODE = dnosis_op.HCODE
AND service.PID = dnosis_op.PID
AND service.SEQ = dnosis_opd.SEQ
WHERE
service.HCODE = @H_CODE
AND service.DATE_SERV BETWEEN @BEGIN_DATE AND @END_DATE
AND dnosis_op.DIAGCODE BETWEEN 'a' AND 'b99'
ORDER BY RAND()
LIMIT 3)
UNION
(SELECT
service.HCODE,
service.PID,
service.HN,
service.DATE_SERV,
dnosis_op.DCODE
FROM
service
JOIN dnosis_op
ON service.HCODE = dnosis_op.HCODE
AND service.PID = dnosis_opd.PID
AND service.SEQ = dnosis_op.SEQ
WHERE
service.HCODE = @H_CODE
AND service.DATE_SERV BETWEEN @BEGIN_DATE AND @END_DATE
AND dnosis_opd.DCODE BETWEEN 'd50' AND 'd89'
ORDER BY RAND()
LIMIT 2)
UNION
(SELECT
service.HCODE,
service.PID,
service.HN,
service.DATE_SERV,
dnosis_op.DCODE
FROM
service
JOIN dnosis_opd
ON service.HCODE = dnosis_op.HCODE
AND service.PID = dnosis_op.PID
AND service.SEQ = dnosis_op.SEQ
WHERE
service.HCODE = @H_CODE
AND service.DATE_SERV BETWEEN @BEGIN_DATE AND @END_DATE
AND dnosis_op.DCODE LIKE 'e%'
ORDER BY RAND()
LIMIT 2)
UNION
(SELECT
service.HCODE,
service.PID,
service.HN,
service.DATE_SERV,
dnosis_op.DCODE
FROM
service
JOIN dnosis_op
ON service.HCODE = dnosis_op.HCODE
AND service.PID = dnosis_op.PID
AND service.SEQ = dnosis_op.SEQ
WHERE
service.HCODE = @H_CODE
AND service.DATE_SERV BETWEEN @BEGIN_DATE AND @END_DATE
AND dnosis_op.DCODE LIKE 'i%'
ORDER BY RAND()
LIMIT 2)
ขอบคุณครับ
Tag : PHP, MySQL
|
ประวัติการแก้ไข 2018-04-10 16:08:27 2018-04-10 16:09:19 2018-04-17 09:38:40
|
 |
 |
 |
 |
Date :
2018-04-10 16:07:51 |
By :
krisz123 |
View :
788 |
Reply :
3 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
WHERE HCODE in (@H_CODE);
|
 |
 |
 |
 |
Date :
2018-04-10 19:10:08 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
WHERE HCODE in (@H_CODE);
อันนี้ผมต้องไปใส่ตรงไหนครับพี่
|
 |
 |
 |
 |
Date :
2018-04-17 09:23:55 |
By :
krisz123 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตัวอย่าง บันทัด 01 กับ 05
01 SET @H_CODE = '1,2,3,4,5';
05 DELETE FROM random_audit_opd WHERE HCODE in (@H_CODE);
ส่วนที่เหลือต้องประยุกต์เอาตามความต้องการ เมื่อรู้ว่า HCODE เป็น ชุดตัวเลข (array)
result ที่ได้ก็จะมี หลายเรคคอร์ด
|
 |
 |
 |
 |
Date :
2018-04-17 11:10:43 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|