BMS-HOSxP Community

HOSxP => Development => ข้อความที่เริ่มโดย: ARMIN ที่ กันยายน 15, 2010, 13:58:46 PM

หัวข้อ: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: ARMIN ที่ กันยายน 15, 2010, 13:58:46 PM
จะ Select ข้อมูลจาก table มาไว้ใน Temp Table โดยที่ไม่ต้อง Create Table นั่้นล่วงหน้า
มีวิธีการ หรือป่าวครับ

รบกวน แนะนำด้วยครับ
ขอบคุณครับ ...
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ กันยายน 15, 2010, 14:28:41 PM
select สด แล้วก็ export เป็น file ตามที่ต้องการไปเลยงัยครับ..แต่จะไม่ได้อยู่ใน hos database ... :D
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: doramon ที่ กันยายน 15, 2010, 14:29:10 PM
จะ Select ข้อมูลจาก table มาไว้ใน Temp Table โดยที่ไม่ต้อง Create Table นั่้นล่วงหน้า
มีวิธีการ หรือป่าวครับ

รบกวน แนะนำด้วยครับ
ขอบคุณครับ ...

มีครับแต่ว่าเขาเรียกว่า tables views
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: Khuad ที่ กันยายน 15, 2010, 14:33:58 PM

... ขอบคุณครับ อ.อ๊อด  เดี๋ยวต้องลองศึกษาดู  ...  :D ...
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: Multithreading ที่ กันยายน 15, 2010, 15:02:07 PM
DROP TABLE IF EXISTS tb_temp;
CREATE TABLE IF NOT EXISTS tb_temp SELECT * from oringin_tb; //ใช้  where ต่อท้ายก็ได้

หรือ ถ้าต้องการ สร้าง view ก็

CREATE OR REPLACE  VIEW  v_tbname  AS  SELECT *  FROM oringin_tb; //ใช้  where ได้เหมือนกัน

 SELECT *  FROM  v_tbname;
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ กันยายน 15, 2010, 15:19:54 PM
ใช้ Views  ก็สะดวกดีเหมือนกันนะครับ
ลองเอาตัวอย่างนี้ไปเล่นดูก็ได้ครับ


พิมพ์ Code
โค๊ด: [Select]
create view pt_view as
select p.hn,concat(p.pname,p.fname,"  ",p.lname) as ptname,p.pttype,p.occupation,pt.name as pttype_name,o.name as occupation_name
from patient  p
left outer join pttype pt on pt.pttype = p.pttype
left outer join occupation o on o.occupation=p.occupation
limit 10
กด Exec


พิมพ์ Code
โค๊ด: [Select]
select * from pt_view
กด Run
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: ARMIN ที่ กันยายน 15, 2010, 16:26:45 PM
 :D ขอบคุณครับ  ;D
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: ARMIN ที่ กันยายน 15, 2010, 16:28:31 PM

ขอบคุณ ทุกท่านมากๆ นะครับ
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: ARMIN ที่ กันยายน 15, 2010, 16:36:08 PM

มันไม่ค่อย ตรงกับที่จะใ้ช้ อ่ะครับ

ผมจะทำประมาณนี้ครับ
เ่ช่น
select * from person where house_id = 5 //-- แล้วก็ เอาไว้ใน TempTable
เหมือนกับ insert into #TempTable ใน SQL Server ครับ

แล้่วที่นี้ เอา Temp มาใช้งานต่อ ครับ เช่น
select * from TempTable

ประมาณนี้ครับ
ขอบคุณอีกครั้ง ครับ
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: [-_เอ็ม_-] ที่ กันยายน 15, 2010, 17:46:17 PM
คือการทำ View ใช่มั๊ยครับ คือไม่ได้แสดงจากตารางโดยตรง
แต่เป็นการเอาผลลัพธ์จาก Query ที่ได้ มาสร้าง View ให้ User
ดูใช่มั๊ยท่าน ผมเข้าใจถูกต้องมั๊ย   ;D
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 15, 2010, 17:48:16 PM
มันไม่ค่อย ตรงกับที่จะใ้ช้ อ่ะครับ
อย่างนี้ตรงไหมครับ
select temp.vstdate,
case
     when time_to_sec(temp.wait_time)<300 then "01|<5min"
     when time_to_sec(temp.wait_time)<601 then "02|5-10min"
     when time_to_sec(temp.wait_time)<1201 then "03|>10-20min"
     when time_to_sec(temp.wait_time)<1801 then "04|>20-30min"
     when time_to_sec(temp.wait_time)<2401 then "05|>30-40min"
     when time_to_sec(temp.wait_time)<3001 then "06|>40-50min"
     when time_to_sec(temp.wait_time)<3601 then "07|>50-60min"
     when time_to_sec(temp.wait_time)<7201 then "08|>1-2hr"
     when time_to_sec(temp.wait_time)<10801 then "09|>2-3hr"
     else "10|>3hr"
end as wait_range, count(vn)
from
(select o.vstdate, o.vn, o.hn, o.oqueue, concat(p.pname,p.fname,' ',p.lname) as ptname, o.vsttime, t.service11, t.service12, t.service6, t.service19, r.rx_time, t.service16,
if(t.service12 is not null,sec_to_time(time_to_sec(r.rx_time)-time_to_sec(t.service12)),if(t.service19 is not null,sec_to_time(time_to_sec(r.rx_time)-time_to_sec(t.service19)),sec_to_time(time_to_sec(r.rx_time)-time_to_sec(t.service11)))) as wait_time
from rx_operator r
left outer join ovst o on o.vn=r.vn
left outer join patient p on p.hn=o.hn
left outer join service_time t on t.vn=r.vn
where o.vstdate between "2010-09-01" and "2010-09-14" and r.pay='Y' and r.pay_depcode="036"
order by r.rx_time) as temp
group by temp.vstdate, wait_range

http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=17347.msg140821#new
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: ARMIN ที่ กันยายน 16, 2010, 11:13:29 AM
ตอบคุณเอ็ม ครับ ... การใช้งานมัน ไม่ค่อยจะตรง view มันจะรวมตาราง เป็นอีก view 
แต่ที่ผมอยากจะทำมัน เป็นการ Select แล้วเอา Data มาไว้ใน Table ที่เป็น temp ครับ แทนที่จะออกมาแสดง ใน Grid ของโปรแรกม Navicat มันสามารถที่จะเอามา ใช่งานต่อได้ครับ แบบว่า ผมต้องการ Select ที่ต้องการออกมาไว้ใน Temp ตัวนี้ครับก่อน ครับ แล้วหลังจากนั้น ก็ค่อยไป Join กับ Table อื่นๆ ต่อ ครับ -*- ไมรุ้ งง ป่าว ..

ตอบคุณ udomchok concept ใช่เลย ครบั
ตอนนี้ ผมก็ select โดยใช้ Nested Query ครับ แต่คือมัน หลาย ตารางครับ
เยอะๆ เข้ามันเริ่มงง ครับ ถ้่าเป็นไปได้ อยากจะเอา Data จาก Nested Query มาไว้ใน Temp ก่อนครับ

แล้วค่อย เอามา Join ใช้งาน Table อื่นๆ ครับ  :)

ขอบคุณทุกท่าน มากๆ นะครับ ที่่ให้คำแนะนำ
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: chk ที่ กันยายน 16, 2010, 12:45:41 PM
 8)  เก็บมารวบรวม แล้วจะเขียนไปเป็นตำรา อิอิ   ???
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: Multithreading ที่ กันยายน 16, 2010, 13:23:03 PM
ตอบคุณเอ็ม ครับ ... การใช้งานมัน ไม่ค่อยจะตรง view มันจะรวมตาราง เป็นอีก view 
แต่ที่ผมอยากจะทำมัน เป็นการ Select แล้วเอา Data มาไว้ใน Table ที่เป็น temp ครับ แทนที่จะออกมาแสดง ใน Grid ของโปรแรกม Navicat มันสามารถที่จะเอามา ใช่งานต่อได้ครับ แบบว่า ผมต้องการ Select ที่ต้องการออกมาไว้ใน Temp ตัวนี้ครับก่อน ครับ แล้วหลังจากนั้น ก็ค่อยไป Join กับ Table อื่นๆ ต่อ ครับ -*- ไมรุ้ งง ป่าว ..

ตอบคุณ udomchok concept ใช่เลย ครบั
ตอนนี้ ผมก็ select โดยใช้ Nested Query ครับ แต่คือมัน หลาย ตารางครับ
เยอะๆ เข้ามันเริ่มงง ครับ ถ้่าเป็นไปได้ อยากจะเอา Data จาก Nested Query มาไว้ใน Temp ก่อนครับ

แล้วค่อย เอามา Join ใช้งาน Table อื่นๆ ครับ  :)

ขอบคุณทุกท่าน มากๆ นะครับ ที่่ให้คำแนะนำ

VIEW  ทำได้ 100%   ตามที่คุณบอกมานั่นแหล่ะ

โจทย์ คือ คุณต้องการใช้ข้อมูลที่มีอยู่ใน Table หลักอยู่แล้ว
ผมไม่เห็นความจำเป็นใดๆ ที่คุณจะต้องสร้าง Table ซ้ำขึ้นมาอีก มันผิดหลักการ Normalization
View สามารถ Join กับ Table ได้  คุณเพียงแค่ นิยาม View ขึ้นมาครั้งเดียว  คุณก็สามารถใช้ View ได้
ได้ตลอดอายุ ของ Table ทุก Table ที่คุณใช้เพื่อนิยาม View

การนิยาม View ไม่จำกัดแค่ว่า 1 Table นิยามได้เพียง 1 View  แต่คุณสามารถนิยาม View 1 View จากหลายๆ Table ได้  ขอแค่ Table คุณมี Relation ต่อกันก็พอ

หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 16, 2010, 13:33:18 PM
ตอบคุณเอ็ม ครับ ... การใช้งานมัน ไม่ค่อยจะตรง view มันจะรวมตาราง เป็นอีก view 
แต่ที่ผมอยากจะทำมัน เป็นการ Select แล้วเอา Data มาไว้ใน Table ที่เป็น temp ครับ แทนที่จะออกมาแสดง ใน Grid ของโปรแรกม Navicat มันสามารถที่จะเอามา ใช่งานต่อได้ครับ แบบว่า ผมต้องการ Select ที่ต้องการออกมาไว้ใน Temp ตัวนี้ครับก่อน ครับ แล้วหลังจากนั้น ก็ค่อยไป Join กับ Table อื่นๆ ต่อ ครับ -*- ไมรุ้ งง ป่าว ..

ตอบคุณ udomchok concept ใช่เลย ครบั
ตอนนี้ ผมก็ select โดยใช้ Nested Query ครับ แต่คือมัน หลาย ตารางครับ
เยอะๆ เข้ามันเริ่มงง ครับ ถ้่าเป็นไปได้ อยากจะเอา Data จาก Nested Query มาไว้ใน Temp ก่อนครับ

แล้วค่อย เอามา Join ใช้งาน Table อื่นๆ ครับ  :)

ขอบคุณทุกท่าน มากๆ นะครับ ที่่ให้คำแนะนำ

ถูกใจกด Thank ครับ
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: Svl2Nuk3 ที่ กันยายน 16, 2010, 15:46:16 PM
ตอบคุณเอ็ม ครับ ... การใช้งานมัน ไม่ค่อยจะตรง view มันจะรวมตาราง เป็นอีก view 
แต่ที่ผมอยากจะทำมัน เป็นการ Select แล้วเอา Data มาไว้ใน Table ที่เป็น temp ครับ แทนที่จะออกมาแสดง ใน Grid ของโปรแรกม Navicat มันสามารถที่จะเอามา ใช่งานต่อได้ครับ แบบว่า ผมต้องการ Select ที่ต้องการออกมาไว้ใน Temp ตัวนี้ครับก่อน ครับ แล้วหลังจากนั้น ก็ค่อยไป Join กับ Table อื่นๆ ต่อ ครับ -*- ไมรุ้ งง ป่าว ..

ตอบคุณ udomchok concept ใช่เลย ครบั
ตอนนี้ ผมก็ select โดยใช้ Nested Query ครับ แต่คือมัน หลาย ตารางครับ
เยอะๆ เข้ามันเริ่มงง ครับ ถ้่าเป็นไปได้ อยากจะเอา Data จาก Nested Query มาไว้ใน Temp ก่อนครับ

แล้วค่อย เอามา Join ใช้งาน Table อื่นๆ ครับ  :)

ขอบคุณทุกท่าน มากๆ นะครับ ที่่ให้คำแนะนำ

VIEW  ทำได้ 100%   ตามที่คุณบอกมานั่นแหล่ะ

โจทย์ คือ คุณต้องการใช้ข้อมูลที่มีอยู่ใน Table หลักอยู่แล้ว
ผมไม่เห็นความจำเป็นใดๆ ที่คุณจะต้องสร้าง Table ซ้ำขึ้นมาอีก มันผิดหลักการ Normalization
View สามารถ Join กับ Table ได้  คุณเพียงแค่ นิยาม View ขึ้นมาครั้งเดียว  คุณก็สามารถใช้ View ได้
ได้ตลอดอายุ ของ Table ทุก Table ที่คุณใช้เพื่อนิยาม View

การนิยาม View ไม่จำกัดแค่ว่า 1 Table นิยามได้เพียง 1 View  แต่คุณสามารถนิยาม View 1 View จากหลายๆ Table ได้  ขอแค่ Table คุณมี Relation ต่อกันก็พอ




เห็นด้วยครับ  ถ้าเป็น Facebook  ผมกด Like  ให้เลย  อิอิ    ;D
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: udomchok ที่ กันยายน 16, 2010, 16:10:39 PM
เห็นด้วยครับ  ถ้าเป็น Facebook  ผมกด Like  ให้เลย  อิอิ    ;D
HOSxP ก็กด Thank แทนได้นะครับ
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: ARMIN ที่ กันยายน 17, 2010, 14:57:55 PM


ตอบคุณ Multithreading น่ะครับ

ผมว่า view ไม่ได้เก็บข้อมูลนะครับ มันเป็นเหมือนกับ Adaptor ที่ Join Table หลายๆ Table ไว้ ให้เราไป Select จากมัน อีกครั้ง โดยมองมันเหมือนอีก Table

แต่ Temp Table มันจะเหมือนกับเป็นตัวแปร ที่เก็บข้อมูล ไม่ได้เป็น adpaptor สำหรับผ่านข้อมูลเหมือนview ฃ
และ Temp Table ไม่จำเป็นที่จะต้องส่ร้างมาก่อน สำหรับ Select into ได้เลย

concept การใช้งาน มันก็ไม่เหมือนกัน นะครับ

view Create ครั้งเดียว และจะอยู่ใน Database เลย ถ้าจะเปลี่ยน Structure ก็ต้องไป เปลี่ยนที่ตัว view

แต่ถ้าเป็น Temp Table เราสามารถ Select ข้อมูลไว้ใน Temp Table ต้องการแค่พักข้อมุลไว้ชั่วคราว ไม่จำเป็น ต้องสร้างมาก่อน ปิดหน้า Query  ตัว Temp มันก็หายไปครับ

มันเหมือนกับ comment ของคุณ udomchok อ่ะครับ
เพียงแต่ต้องการเปลี่ยน จาก nested query เป็น Temp Table แทน

ถ้าสำมุตว่า เปลี่ยนไปเป็นใช้ View เราก็ต้องไป Create มันอีก
ต้องเสียเวลากับ Define Fields ให้เหมือนกับที่เรา จะ Select มาครับ

และถ้าสมมุติ ว่า Nested query ที่ผมจะใช้ ประมาณสัก 10 Table
ก็ต้อง Create view 10 views และต้องคอยลบออก อีก เำพราะไม่ได้ใช้อีก ถ้าเป็น Temp Table ก็ใช้ได้เลยครับ
เพียงแต่ ไม่รุ้่ว่า มันทำงัย

พอดี ก่อนหน้านี้ เคยใช้ SQL Server มาครับ แล้วติดกับการใช้ Temp Table มันสะดวกสะบาย  และทำให้ไม่งง โค้ดตัวเองครับ

ส่วนเรื่องผิดหลักการ นั้นผมว่า มันก็ไม่น่าจะผิด นะครับ เพราะ Temp Table มันคือ Table เหมือนกัน Table จริงๆ ใน Database ครับ สามารถ เอา Fk มา Join กันได้ ตามปกติ เหมือนกับ Table จริงๆ ทุกประการ ครับ

ปล. ถ้าความเข้าใจของผมผิด งัยรบกวนแนะนำ ด้วยนะครับ   ;D
หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: Multithreading ที่ กันยายน 17, 2010, 16:15:12 PM
temp ก็ temp

หัวข้อ: Re: การ Select ข้อมูลลง Temp Table
เริ่มหัวข้อโดย: ARMIN ที่ กันยายน 20, 2010, 08:54:05 AM

ขอบคุณหลายๆ  ... ครับ :)