Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > หัวหน้าให้ดึงข้อมูลจาก MSSQL Server 2000 มาใช้อ่ะค่ะ



 

หัวหน้าให้ดึงข้อมูลจาก MSSQL Server 2000 มาใช้อ่ะค่ะ

 



Topic : 052852



โพสกระทู้ ( 258 )
บทความ ( 0 )



สถานะออฟไลน์




คือหัวหน้าให้ดึงข้อมูลจาก Database ที่โปรแกรมการจัดการได้ทำขั้นน่ะค่ะ
คือไม่เข้าใจการ Query ที่โปรแกรมเค้าใช้น่ะค่ะ เลย Joint Table ไม่ถูก รบกวนแนะนำหน่อยนะคะ

Code (PHP)
select	(emgood.goodid) goodid ,
		(emgood.goodcode) goodcode ,
		(emgood.goodname1) goodname1 ,
		(emgood.goodnameeng1) goodnameeng1 ,
		(emgood.maingoodunitid) maingoodunitid ,
		(emgoodunit.goodunitcode) goodunitcode ,
		(emgoodunit.goodunitname) goodunitname ,
		(emgoodunit.goodunitnameeng) goodunitnameeng ,
		(eminve.invecode) invecode,
		(eminve.invename) invename,
		(eminve.invenameeng) invenameeng,

(case icstockdetail.stockflag when 1 then icstockdetail.goodstockqty else 0 end) receqty ,

(case icstockdetail.stockflag when -1 then icstockdetail.goodstockqty else 0 end) payqty ,

(isnull(icstockdetail.goodstockqty*icstockdetail.stockflag,0)) remaqty_sum ,
		0 remaqty   ,

		(icstockdetail.costflag) costflag ,
		(icstockdetail.docudate) docudate ,
		(icstockdetail.docuno) docuno ,
		(icstockdetail.docutype) docutype ,
		(icstockdetail.docutypecode) docutypecode ,
		(icstockdetail.remark) remark ,
		(icdocutypedt.docutypedesc+' '+
		
		isnull((select emcust.custname from emcust where emcust.custid = icstockdetail.custid),'')+' '+
		
		isnull((select emvendor.vendorname from emvendor where emvendor.vendorid = icstockdetail.vendorid),'')) docutypedesc ,
		
		(icdocutypedt.docutypedesceng+' '+	isnull((select emcust.custnameeng from emcust where emcust.custid = icstockdetail.custid),'')+' '+
		
		isnull((select emvendor.vendornameeng from emvendor where emvendor.vendorid = icstockdetail.vendorid),'')) docutypedesceng ,
		
		(icstockdetail.listno) listno,
		(icstockdetail.stockflag)stockflag,
		(2)flag
from	

	icstockdetail 
	left outer join emgood on emgood.goodid=icstockdetail.goodid
	left outer join eminve on eminve.inveid=icstockdetail.inveid
	left outer join emgoodtype on emgood.goodtypeid =  emgoodtype.goodtypeid
	left outer join emgoodcate on emgood.goodcateid = emgoodcate.goodcateid
	left outer join emgoodbrand on emgood.goodbrandid = emgoodbrand.goodbrandid
	left outer join emgoodgroup on emgood.goodgroupid = emgoodgroup.goodgroupid
	left outer join icdocutypedt on (icstockdetail.docutype = icdocutypedt.docutype) and (icstockdetail.docutypecode = icdocutypedt.docutypecode) ,
	emgoodunit
where (icstockdetail.stockflag in (1, -1)) and (icstockdetail.brchid =:an_brchid or :an_brchid = 0 )
	and  (emgood.maingoodunitid = emgoodunit.goodunitid) 
	and  (emgood.goodpackflag not in (:as_goodpackflag))
	AND  ( convert(varchar,icstockdetail.DocuDate,112) between :as_docudate1 and :as_docudate2 ) 

union

select (emgood.goodid) goodid ,
		(emgood.goodcode) goodcode ,
		(emgood.goodname1) goodname1 ,
		(emgood.goodnameeng1) goodnameeng1 ,
		(emgood.maingoodunitid) maingoodunitid ,
		
		(emgoodunit.goodunitcode) goodunitcode ,
		(emgoodunit.goodunitname) goodunitname ,
		(emgoodunit.goodunitnameeng) goodunitnameeng ,
		
		(eminve.invecode) invecode,
		(eminve.invename) invename,
		(eminve.invenameeng) invenameeng,
		(0.0) receqty ,
		(0.0) payqty ,
		
		isnull((sum(ICStockDetail.GoodStockQty*ICStockDetail.StockFlag)),0)  remaqty_sum ,
		
		isnull((sum(ICStockDetail.GoodStockQty*ICStockDetail.StockFlag)),0) remaqty ,
		('Y') costflag ,
		(null) docudate ,
		(null) docuno ,
		(null) docutype,
		(null) docutypecode,
		(null) remark ,
		('ยอดคงเหลือยกมา') docutypedesc ,
		('Bring forward') DocuTypedescEng,
		(1)stockflag,
		(0) listno,
		(1)flag

from	
	icstockdetail 
	left outer join emgood on emgood.goodid=icstockdetail.goodid
	left outer join eminve on eminve.inveid=icstockdetail.inveid
	left outer join emgoodtype on emgood.goodtypeid =  emgoodtype.goodtypeid
	left outer join emgoodcate on emgood.goodcateid = emgoodcate.goodcateid
	left outer join emgoodbrand on emgood.goodbrandid = emgoodbrand.goodbrandid
	left outer join emgoodgroup on emgood.goodgroupid = emgoodgroup.goodgroupid
	left outer join icdocutypedt on (icstockdetail.docutype = icdocutypedt.docutype) and (icstockdetail.docutypecode = icdocutypedt.docutypecode) ,
	emgoodunit
        where (icstockdetail.stockflag in (1, -1)) and (icstockdetail.brchid =:an_brchid or :an_brchid = 0 )
	and  (emgood.maingoodunitid = emgoodunit.goodunitid) 
	and  (emgood.goodpackflag not in (:as_goodpackflag))

AND  ( convert(varchar,icstockdetail.DocuDate,112) <:as_docudate1) 
group by 	emgood.goodid,
		emgood.goodcode,
		emgood.goodname1,
		emgood.goodnameeng1,
		emgood.maingoodunitid,
		emgoodunit.goodunitcode,
		emgoodunit.goodunitname,
		emgoodunit.goodunitnameeng,
		eminve.invecode,
		eminve.invename,
		eminve.invenameeng
Order by 	emgood.goodcode ASC,
		eminve.invecode ASC,
		flag,
		icstockdetail.docudate  ASC,
		icstockdetail.StockFlag Desc,
 		icstockdetail.docuno ASC



ไม่อธิบายหมดก็ได้ค่ะ ขอแค่แนะนำก็ยังดี



Tag : PHP, Ms SQL Server 2005, Oracle, HTML/CSS, VS 2008 (.NET 3.x)









ประวัติการแก้ไข
2010-12-10 08:44:55
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-12-08 17:20:24 By : naked13 View : 1416 Reply : 6
 

 

No. 1



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


พระเจ้า script query ขั้นเทพ = =' กว่าจะออกนานป่ะครับนี่
แล้วอยากถามอะไรเหรอครับ หรือให้อธิบายเฉยๆ join กันขนาดนี้ ถ้าอยากทำใหม่หรือแก้ไข ปรับปรุง เนี่ยผมว่าทำความเข้าใจข้อมูลของแต่ละ table ให้ดีก่อนด้วยดีกว่าครับ มาแกะ script จะได้ไม่งงมากด้วย

script ที่ให้มาประกอบด้วย script ขนาดใหญ่ๆ 2 script union กัน

Script #1
select	(emgood.goodid) goodid ,
		(emgood.goodcode) goodcode ,
		(emgood.goodname1) goodname1 ,
		(emgood.goodnameeng1) goodnameeng1 ,
		(emgood.maingoodunitid) maingoodunitid ,
		(emgoodunit.goodunitcode) goodunitcode ,
		(emgoodunit.goodunitname) goodunitname ,
		(emgoodunit.goodunitnameeng) goodunitnameeng ,
		(eminve.invecode) invecode,
		(eminve.invename) invename,
		(eminve.invenameeng) invenameeng,

(case icstockdetail.stockflag when 1 then icstockdetail.goodstockqty else 0 end) receqty ,

(case icstockdetail.stockflag when -1 then icstockdetail.goodstockqty else 0 end) payqty ,

(isnull(icstockdetail.goodstockqty*icstockdetail.stockflag,0)) remaqty_sum ,
		0 remaqty   ,

		(icstockdetail.costflag) costflag ,
		(icstockdetail.docudate) docudate ,
		(icstockdetail.docuno) docuno ,
		(icstockdetail.docutype) docutype ,
		(icstockdetail.docutypecode) docutypecode ,
		(icstockdetail.remark) remark ,
		(icdocutypedt.docutypedesc+' '+
		
		isnull((select emcust.custname from emcust where emcust.custid = icstockdetail.custid),'')+' '+
		
		isnull((select emvendor.vendorname from emvendor where emvendor.vendorid = icstockdetail.vendorid),'')) docutypedesc ,
		
		(icdocutypedt.docutypedesceng+' '+	isnull((select emcust.custnameeng from emcust where emcust.custid = icstockdetail.custid),'')+' '+
		
		isnull((select emvendor.vendornameeng from emvendor where emvendor.vendorid = icstockdetail.vendorid),'')) docutypedesceng ,
		
		(icstockdetail.listno) listno,
		(icstockdetail.stockflag)stockflag,
		(2)flag
from	

	icstockdetail 
	left outer join emgood on emgood.goodid=icstockdetail.goodid
	left outer join eminve on eminve.inveid=icstockdetail.inveid
	left outer join emgoodtype on emgood.goodtypeid =  emgoodtype.goodtypeid
	left outer join emgoodcate on emgood.goodcateid = emgoodcate.goodcateid
	left outer join emgoodbrand on emgood.goodbrandid = emgoodbrand.goodbrandid
	left outer join emgoodgroup on emgood.goodgroupid = emgoodgroup.goodgroupid
	left outer join icdocutypedt on (icstockdetail.docutype = icdocutypedt.docutype) and (icstockdetail.docutypecode = icdocutypedt.docutypecode) ,
	emgoodunit
where (icstockdetail.stockflag in (1, -1)) and (icstockdetail.brchid =:an_brchid or :an_brchid = 0 )
	and  (emgood.maingoodunitid = emgoodunit.goodunitid) 
	and  (emgood.goodpackflag not in (:as_goodpackflag))
	AND  ( convert(varchar,icstockdetail.DocuDate,112) between :as_docudate1 and :as_docudate2 ) 

union


Script #2
select (emgood.goodid) goodid ,
		(emgood.goodcode) goodcode ,
		(emgood.goodname1) goodname1 ,
		(emgood.goodnameeng1) goodnameeng1 ,
		(emgood.maingoodunitid) maingoodunitid ,
		
		(emgoodunit.goodunitcode) goodunitcode ,
		(emgoodunit.goodunitname) goodunitname ,
		(emgoodunit.goodunitnameeng) goodunitnameeng ,
		
		(eminve.invecode) invecode,
		(eminve.invename) invename,
		(eminve.invenameeng) invenameeng,
		(0.0) receqty ,
		(0.0) payqty ,
		
		isnull((sum(ICStockDetail.GoodStockQty*ICStockDetail.StockFlag)),0)  remaqty_sum ,
		
		isnull((sum(ICStockDetail.GoodStockQty*ICStockDetail.StockFlag)),0) remaqty ,
		('Y') costflag ,
		(null) docudate ,
		(null) docuno ,
		(null) docutype,
		(null) docutypecode,
		(null) remark ,
		('ยอดคงเหลือยกมา') docutypedesc ,
		('Bring forward') DocuTypedescEng,
		(1)stockflag,
		(0) listno,
		(1)flag

from	
	icstockdetail 
	left outer join emgood on emgood.goodid=icstockdetail.goodid
	left outer join eminve on eminve.inveid=icstockdetail.inveid
	left outer join emgoodtype on emgood.goodtypeid =  emgoodtype.goodtypeid
	left outer join emgoodcate on emgood.goodcateid = emgoodcate.goodcateid
	left outer join emgoodbrand on emgood.goodbrandid = emgoodbrand.goodbrandid
	left outer join emgoodgroup on emgood.goodgroupid = emgoodgroup.goodgroupid
	left outer join icdocutypedt on (icstockdetail.docutype = icdocutypedt.docutype) and (icstockdetail.docutypecode = icdocutypedt.docutypecode) ,
	emgoodunit
        where (icstockdetail.stockflag in (1, -1)) and (icstockdetail.brchid =:an_brchid or :an_brchid = 0 )
	and  (emgood.maingoodunitid = emgoodunit.goodunitid) 
	and  (emgood.goodpackflag not in (:as_goodpackflag))

AND  ( convert(varchar,icstockdetail.DocuDate,112) <:as_docudate1) 
group by 	emgood.goodid,
		emgood.goodcode,
		emgood.goodname1,
		emgood.goodnameeng1,
		emgood.maingoodunitid,
		emgoodunit.goodunitcode,
		emgoodunit.goodunitname,
		emgoodunit.goodunitnameeng,
		eminve.invecode,
		eminve.invename,
		eminve.invenameeng
Order by 	emgood.goodcode ASC,
		eminve.invecode ASC,
		flag,
		icstockdetail.docudate  ASC,
		icstockdetail.StockFlag Desc,
 		icstockdetail.docuno ASC







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-08 17:50:30 By : salapao_codeman
 


 

No. 2



โพสกระทู้ ( 258 )
บทความ ( 0 )



สถานะออฟไลน์


งั้น อย่างแรกที่อยากรู้คือ

(emgood.goodid) goodid ,

อันนี้คือ Fields : goodid ใน table emgood ใช่หรือไม่คะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-10 08:43:53 By : naked13
 

 

No. 3



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ใช่ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-11 12:14:43 By : salapao_codeman
 


 

No. 4



โพสกระทู้ ( 258 )
บทความ ( 0 )



สถานะออฟไลน์


Code (PHP)
(case icstockdetail.stockflag when 1 then icstockdetail.goodstockqty else 0 end) receqty , 
 
(case icstockdetail.stockflag when -1 then icstockdetail.goodstockqty else 0 end) payqty ,

(isnull(icstockdetail.goodstockqty*icstockdetail.stockflag,0)) remaqty_sum , 0 remaqty   , 



1.อันนี้หมายความว่่าอย่างไรคะ


Code (PHP)
        
isnull((select emcust.custname from emcust where emcust.custid = icstockdetail.custid),'')+' '+         
 
     
isnull((select emvendor.vendorname from emvendor where emvendor.vendorid = icstockdetail.vendorid),'')) docutypedesc , 
       
 
   
(icdocutypedt.docutypedesceng+' '+  isnull((select emcust.custnameeng from emcust where emcust.custid = icstockdetail.custid),'')+' '+       
 
    
isnull((select emvendor.vendornameeng from emvendor where emvendor.vendorid = icstockdetail.vendorid),'')) docutypedesceng , 


2. อันนี้หมายความว่าไงเหรอคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-11 13:48:18 By : naked13
 


 

No. 6



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


เป็นการใช้เงื่อนไข if อ่ะ ใน query command ก็สามารถใส่เงื่อนไขของการ select ให้ซับซ้อนลงไปอีกได้ด้วยอ่ะนะครับ
ปกติเราจะรู้ว่า query command เวลากำหนดเงื่อนไขให้ ตั้ง where cause ให้ถูกต้องใช่ไม๊ครับ แต่การใช้ case นี้จะเป็น การตั้งเงื่อนไขของข้อมูลที่ได้ถูกเลือกออกมาแล้วจาะ where cause ให้แสดงในแบบที่เราต้องการอีกทีน่ะครับ

คำถามที่ #1
(case icstockdetail.stockflag when 1 then icstockdetail.goodstockqty else 0 end) receqty , 
(case icstockdetail.stockflag when -1 then icstockdetail.goodstockqty else 0 end) payqty ,
(isnull(icstockdetail.goodstockqty*icstockdetail.stockflag,0)) remaqty_sum , 0 remaqty   , 

แปลได้ว่า "ถ้า column icstockdetail.stockflag = 1 ให้แสดงค่าของ column icstockdetail.goodstockqty อย่างอื่นให้แสดง 0" แล้วให้แสดง
ชื่ือ column ที่ผลลัพธ์ว่า recqty

แปลได้ว่า "ถ้า column icstockdetail.stockflag = -1 ให้แสดงค่าของ column icstockdetail.goodstockqty อย่างอื่นให้แสดง 0" แล้วให้แสดง
ชื่ือ column ที่ผลลัพธ์ว่า payqty

แปลได้ว่า "ถ้า column icstockdetail.goodstockqty * icstockdetail.stockflag = null (คือไม่มีค่าใดๆเลย) ให้แสดงค่า 0 แสดง
ชื่ือ column ที่ผลลัพธ์ว่า remaqty_sum

ส่วนที่ติดมาด้วยคืออันนี้ 0 remaqty ไม่มีการทำอะไรพิเศษ แค่ให้แสดงค่า 0 ออกมาโดยใส่ชื่อ column ที่ผลลัพธ์ว่า remaqty

คำถามที่ #2
isnull((select emcust.custname from emcust where emcust.custid = icstockdetail.custid),'')+' '+     
isnull((select emvendor.vendorname from emvendor where emvendor.vendorid = icstockdetail.vendorid),'')) docutypedesc , 
(icdocutypedt.docutypedesceng+' '+  isnull((select emcust.custnameeng from emcust where emcust.custid = icstockdetail.custid),'')
+' '+   
isnull((select emvendor.vendornameeng from emvendor where emvendor.vendorid = icstockdetail.vendorid),'')) docutypedesceng ,


ก็จะคล้ายๆ กับคำถามแรก คือใช้ function isnull() มาช่วยในการแสดงผลลัพธ์อีกทีครับ แต่ที่ซับซ้อนก็คือค่าที่เอามาตรวจสอบ เป็นการไป select ข้อมูลขึ้นมาใหม่ครับ แล้วก็จะเห็นว่ามีการเชื่อมต่อข้อความกันด้วยโดยใช้เครื่องหมาย +

บรรทัด 1#) แปลว่า "ถ้า เลือกข้อมูลใหม่ emcust.custname จาก table emcust โดยที่ emcust.custid = icstockdetail.custid ไม่มีค่าใดๆ (เป็น null) ให้แสดงค่าว่าง"
โดยเชื่อมต่อกับ (+' '+) เป็นการเว้นวรรค
"ถ้า เลือกข้อมูลใหม่ emvendor.vendorname จาก table emvendor โดยที่ emvendor.vendorid = icstockdetail.vendorid ไม่มีค่าใดๆ (เป็น null) ให้แสดงค่าว่าง" และผลลัพธ์จะแสดงออกมาในชื่อ column docutypedesc

ผมขออธิบายแค่บรรทัดเดียวแล้วกัน เพราะที่เหลือก็เหมือนกัน น่าจะทำความเข้าใจเองได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-12 11:21:39 By : salapao_codeman
 


 

No. 7



โพสกระทู้ ( 258 )
บทความ ( 0 )



สถานะออฟไลน์


หนูว่า พี่เทพกว่าโจทย์อีกนะนี่ ขอบคุณค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-13 09:51:02 By : naked13
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : หัวหน้าให้ดึงข้อมูลจาก MSSQL Server 2000 มาใช้อ่ะค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่