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 > .NET Framework > Forum > คิวรี่ข้อมูล จากฐานข้อมูล ต้องการให้ได้ผลลัพธ์มาแ่ค่บรรทัดเดียวอ่ะค่ะ



 

คิวรี่ข้อมูล จากฐานข้อมูล ต้องการให้ได้ผลลัพธ์มาแ่ค่บรรทัดเดียวอ่ะค่ะ

 



Topic : 056348



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



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




ต้องการให้ได้ผลลัพธ์มาแ่ค่บรรทัดเดียวอ่ะค่ะ
โดยฟิวส์ ดีเทล ต้องการเอาแค่ลำดับแรก ไม่เอาทั้งหมดค่ะ

ตารางแรก เก็บข้อมูลเป็น มาสเตอร์
ตารางที่สอง เก็บข้อมูลเป็น ดีเทล

ถ้าเลือก เฉพาะฟิวส์ ในตารางแรก ก็จะไม่ซ้ำ
แต่ถ้าเลือก ฟิวส์ ในตารางที่สอง ก็จะเบิ้ลทันทีเลยค่ะ

ตัวอย่างตารางตามรูปค่ะ


unit



Tag : .NET, MySQL, Oracle, Web (ASP.NET), VB.NET, C#







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-02-21 16:06:40 By : njnight View : 5446 Reply : 12
 

 

No. 1

Guest


มันก้อถูกตามนิยามการเชื่อมตารางนี่คะ
แล้วต้องการผลลัพธ์ยังไงละคะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 16:20:18 By : สาวเอ๋อ (ก้อคนมานเอ๋อ)
 


 

No. 2



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



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


ใส่ Top 1 หลัง Select ใน SQL String ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 16:22:48 By : kaimuk
 

 

No. 3



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



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


ต้องการแค่ แถวแรก แถวเดียว อ่ะค่ะ เพราะเวลาแสดงรายงาน มันจะซ้ำกัน หลายเร็คคอร์ด

เพราะความต้องการจริงๆคือ เอาดีเทล ที่เป็นปัจจุบัน ค่ะ เช่น Ddddd4 คือ ดีเทลล่าสุด ค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 16:24:12 By : njnight
 


 

No. 4



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



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


ฐานข้อมูลเป็น Oracle ค่ะ ถ้าเป็น คิวรี่ด้านล่าง จะได้ค่าเบิ้ลค่ะ

select distinct(b.nid) HisID,
b.senddate scandate,
b.caseid,
b.DOCNO,
b.DOCID,
b.RC,
b.PAYTYPE,
cf_mailinglist.strName flowname,
'' sender,
'' senddatetime,
stuser.receiveuser ,
stuser.receivedate,
b.flowstatus,
'' TAT,
'' OVERTAT,
'' OVERSLA,
b.REJECTUSER
from cf_circulationhistory b
Left Join cf_circulationform on (b.nCirculationFormId = cf_circulationform.nID)
Left Join cf_mailinglist on (cf_circulationform.nMailingListId=cf_mailinglist.nID)
Left Join cf_formtemplate on (cf_formtemplate.nid=cf_mailinglist.ntemplateid)
,
(select * from (
SELECT ROWNUM as RN, e.receiveuser,e.receivedate,e.COMPLETEDATE ,e.nid,e.HisID
FROM (select ROWNUM as RN, cf_circulationhistory.nid , cf_circulationprocess.nCirculationHistoryId HisID,
userSend.strUserID receiveuser,
cf_circulationprocess.startdate receivedate, cf_circulationprocess.COMPLETEDATE, CF_ATTACHMENT.STRPATH
from(cf_circulationhistory)
Left Join cf_circulationform on (cf_circulationhistory.nCirculationFormId = cf_circulationform.nID)
Left Join cf_mailinglist on (cf_circulationform.nMailingListId=cf_mailinglist.nID)
Left Join cf_circulationprocess on (cf_circulationprocess.ncirculationhistoryid=cf_circulationhistory.nID)
Left Join cf_user userSend on (userSend.nID =cf_circulationprocess.nuserid and userSend.bDeleted =0)
Left Join cf_formtemplate on (cf_formtemplate.nid=cf_mailinglist.ntemplateid)
Left join CF_ATTACHMENT on (cf_circulationhistory.nID = CF_ATTACHMENT.ncirculationhistoryid)
order by cf_circulationprocess.nid desc )e )) stuser
where
b.SendDate >= to_date('01/02/2011 00:00:00','dd-mm-yyyy hh24:mi:ss')
and b.SendDate <= to_date('28/02/2011 23:59:00','dd-mm-yyyy hh24:mi:ss')
and cf_formtemplate.NGROUP in ('การเงินเขต','การเงินส่วนกลาง')
and b.nid=stuser.HisID
order by b.senddate



ถ้าเป็นคิวรี่นี้ โดยใส่ Rownum จะไม่มีข้อมูลค่ะ

select distinct(b.nid) HisID,
b.senddate scandate,
b.caseid,
b.DOCNO,
b.DOCID,
b.RC,
b.PAYTYPE,
cf_mailinglist.strName flowname,
'' sender,
'' senddatetime,
stuser.receiveuser ,
stuser.receivedate,
b.flowstatus,
'' TAT,
'' OVERTAT,
'' OVERSLA,
b.REJECTUSER
from cf_circulationhistory b
Left Join cf_circulationform on (b.nCirculationFormId = cf_circulationform.nID)
Left Join cf_mailinglist on (cf_circulationform.nMailingListId=cf_mailinglist.nID)
Left Join cf_formtemplate on (cf_formtemplate.nid=cf_mailinglist.ntemplateid)
,
(select * from (
SELECT ROWNUM as RN, e.receiveuser,e.receivedate,e.COMPLETEDATE ,e.nid,e.HisID
FROM (select ROWNUM as RN, cf_circulationhistory.nid , cf_circulationprocess.nCirculationHistoryId HisID,
userSend.strUserID receiveuser,
cf_circulationprocess.startdate receivedate, cf_circulationprocess.COMPLETEDATE, CF_ATTACHMENT.STRPATH
from(cf_circulationhistory)
Left Join cf_circulationform on (cf_circulationhistory.nCirculationFormId = cf_circulationform.nID)
Left Join cf_mailinglist on (cf_circulationform.nMailingListId=cf_mailinglist.nID)
Left Join cf_circulationprocess on (cf_circulationprocess.ncirculationhistoryid=cf_circulationhistory.nID)
Left Join cf_user userSend on (userSend.nID =cf_circulationprocess.nuserid and userSend.bDeleted =0)
Left Join cf_formtemplate on (cf_formtemplate.nid=cf_mailinglist.ntemplateid)
Left join CF_ATTACHMENT on (cf_circulationhistory.nID = CF_ATTACHMENT.ncirculationhistoryid)
order by cf_circulationprocess.nid desc )e )where RN=1) stuser
where
b.SendDate >= to_date('01/02/2011 00:00:00','dd-mm-yyyy hh24:mi:ss')
and b.SendDate <= to_date('28/02/2011 23:59:00','dd-mm-yyyy hh24:mi:ss')
and cf_formtemplate.NGROUP in ('การเงินเขต','การเงินส่วนกลาง')
and b.nid=stuser.HisID
order by b.senddate
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 16:28:03 By : njnight
 


 

No. 6



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


ยาวดี เดวจะมาดูให้ตอนเย็นค่ะ ตอนนี้ขอตัวก่อนค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 16:29:40 By : blurEyes
 


 

No. 7



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



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


ขอบคุณ คุณ Stupid.gurl.th กับคุณไข่มุกมากนะคะ มีน้ำใจจังเลย

ตอนแรกทำงานโดยการคิวรี่เป็น ดาต้าเทเบิ้ล จากมาสเตอร์ มาก่อน แล้ววนลูป เพื่อ หาค่า ดีเทล แต่ละตัวค่ะ ปรากฏว่านานมาค่ะ
นานสุดๆ เลยคิดหาวิธีอื่น
แต่ก็ยังแก้ไม่ได้ค่ะ คิดว่าอยากคิวรี่ครั้งเดียวแล้วลงกริดวิวเลยน่าจะเร็ว

อยากถามว่าถ้าวนลูปใน เว็บเซอร์วิสจะช้ามั้ยคะ ถ้าคิวรี่ไม่ได้แล้วจริงๆ อ่ะค่ะ

อันนี้คือรายละเอียดเพิ่มเติมค่ะ

ฟ


ห
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 16:45:21 By : njnight
 


 

No. 8



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



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


สู้ๆนะครับ ^ ^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 19:32:09 By : omisuka
 


 

No. 10



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



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


เครียดเหลือเกินแล้วค่ะ ลูกค้าอยากได้ รีพอตที่ทำงานเร็วๆ เลือกรายงานทั้งเดือน รอประมาณ ยี่สิบนาทีได้ เห้อ!
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 20:58:01 By : njnight
 


 

No. 11



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


first form many row retrival
ผลลัพธ์จะประมาณนี้ป่าวคะ
กรณีนี้เราจะเรียกกันสั้นๆว่า first from many row selection/retrival
ค่อนข้างจะพบบ่อยในงานที่เป็น request จากฝ่ายบริหาร
และเป็นอะไรที่ค่อนข้างจะวุ่นวาย ดังที่ query ของจริงที่ยกมาข้างบน
ข่าวดีคือ มันทำได้ค่ะ เร็วกว่าการ วน loop ร้อยเท่าพันทวี
และข่าวร้ายคือมันไม่ใช่ฟังก์ชันหรือ feature มาตรฐานที่ ANSI กำหนดไว้
เพราะหากใช้การ SELECT - JOIN ปกติ ก็ทำได้แต่จะช้าและซับซ้อนเอามากๆ
คือตัวอย่างนี่ทำจาก MS SQL SERVER ค่ะ ใช้ KEYWORD พิเศษ CROSS APPLY
เข้ามาช่วย ซึ่งใน ORACLE ไม่มี !!

อะข่าวดีถัดไปคือ ORACLE จะมี AGGREGATE FUNCTION : FIRST มาให้แทน
ซึ่งทำหน้าที่เหมือนกัน
ข่าวร้ายถัดไป เครื่องนี้มะมี ORACLE ค่ะ ตัว SERVER ส่วนตัวที่ใช้ TEST
และลง ORACLE เอาไปรัน DEMO งานอยู่ เลยไม่แน่ใจกับคำตอบค่ะ
คงจาช่วยได้เท่านี้นะคะ ลองไปดูที่ link นี้ดู (ไม่ได้ทดสอบเลยไม่แน่ใจอะค่ะ)
Howto select first value in a group by bunch of rows.

ส่วนของ ms sql server จะลง code ไว้เผื่อสำหรับคนอื่นละกันนะคะ

Code (C#)
-- BEGINNING TEST DATA
USE [test]
GO


-- BEGIN : CREATE TABLE SECTION
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[simple_document_header]') AND type in (N'U'))
DROP TABLE [dbo].[simple_document_header]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[simple_document_header](
	[id] [int] NOT NULL,
	[name] [varchar](50) NULL,
 CONSTRAINT [PK_simple_document_header] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[simple_document_flow]') AND type in (N'U'))
DROP TABLE [dbo].[simple_document_flow]
GO

CREATE TABLE [dbo].[simple_document_flow](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[document_id] int NULL ,
	[receive_date_time] datetime NULL ,
	[user_name] [varchar](50) NULL,
 CONSTRAINT [PK_simple_document_flow] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
-- END : CREATE TABLE SECTION

-- BEGIN : INSERT DUMMY DATA 

INSERT INTO [test].[dbo].[simple_document_header]
           ([id] ,[name])
     VALUES
           (1 ,'Account article no:191') ,
           (2 ,'Account article no:562') ,
           (3 ,'Inventory request : 141') 
GO



INSERT INTO [test].[dbo].[simple_document_flow]
           ([document_id]
           ,[receive_date_time]
           ,[user_name])
     VALUES
           (1 , DATEADD ( DAY ,-1 , GETDATE()) ,'Nena') ,
           (1 , DATEADD ( DAY ,-2 , GETDATE()) ,'Anne') ,
           (1 , DATEADD ( DAY ,-3 , GETDATE()) ,'Cifer') ,
           (2 , DATEADD ( DAY ,-2 , GETDATE()) ,'Natt') ,
           (2 , DATEADD ( DAY ,-4 , GETDATE()) ,'Bree') ,
           (2 , DATEADD ( DAY ,-5 , GETDATE()) ,'Brom') ,
           (2 , DATEADD ( DAY ,-6 , GETDATE()) ,'Briona') ,
           (3 , DATEADD ( DAY ,-2 , GETDATE()) ,'Karl') 
GO

SELECT * 
FROM [simple_document_header] AS [Header];

SELECT [id] ,[document_id] , convert(varchar ,[receive_date_time],109) ,[user_name] 
FROM [simple_document_flow] AS [Flow] ;

SELECT  [Header].* ,[Complicate_Flow].*
FROM [simple_document_header] AS [Header]
CROSS APPLY 
(
	SELECT TOP 1 *
	FROM [simple_document_flow] AS [Flow]
	WHERE [Flow].[document_id] = [Header].[id]  
	ORDER BY [receive_date_time] 
) AS [Complicate_Flow]
;

-- END : INSERT DUMMY DATA


-- BEGIN : CLEAR TABLE SECTION
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[simple_document_header]') AND type in (N'U'))
DROP TABLE [dbo].[simple_document_header]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[simple_document_flow]') AND type in (N'U'))
DROP TABLE [dbo].[simple_document_flow]
GO
-- END : CLEAR TABLE SECTION


มีข้อแนะนำเพิ่มเติมว่าให้ซ่อนรูป query ที่ซับซ้อนลงให้มากที่สุด
เพราะการ join จะเพิ่ม overload ต้องจำเป็นจริงๆ
จากนั้นเก็บ query เป็นส่วนจัดเก็บใน view แล้วนำมาใช้งานค่ะ
ต้องขอโทษด้วยนะคะ สำหรับ ORACLE
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 20:59:56 By : blurEyes
 


 

No. 12



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



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


ขอบคุณมากเลยนะคะ

แหม อยากหอมแก้มจริงๆค่ะ

Oracle ก็ไม่มีในเครื่องด้วย ต้องไปบริษัทลูกค้าถึงจะเทสได้ งานก็เสร็จช้าตามไปด้วย เพราะเอากลับมาทำที่บ้านไม่ได้

ขอบคุณมากๆนะคะ พรุ่งนี้จะลองเทสดูค่ะ

ตอนนี้ขอศึกษาที่ให้มาก่อนนะคะ

ขอบคุณค่ะคุณกระต่ายน้อยสุดสวย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 21:11:44 By : njnight
 


 

No. 13



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



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


คุุณกระต่ายน้อยคะ

คือตอนนี้เราลง sqldeveloper สำหรับ ติดต่อ Oracle ไว้น่ะค่ะ
ถ้าเราอยากลง Oracle ในเครื่อง Notebook เราเลยทำได้มั้ยคะ
แล้วเราสามารถ backup data จาก oracle ที่บริษัทลูกค้ามาไว้ทดสอบ
ได้หรือเปล่า
เราไม่เคยติดตั้ง Oracle เลยค่ะ เคยใช้แต่ mySql , SQL SERVER เท่านั้นค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 21:16:42 By : njnight
 


 

No. 14



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



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


ทำได้ค่ะ พี่วินลงวิธี install oracle ไว้อยู่
เพียงแต่ว่า oracle เขียนด้วย java ตอนที่ลงใน notebook
รู้สึกเลยว่าเครื่องอืดขึ้นมาก เลย uninstall ออกไปก่อนค่ะ
เพราะปกติ mySQL - MSSQL สองตัวนี้ก้อเอาอยู่เหมือนกันค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-02-21 23:49:34 By : blurEyes
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : คิวรี่ข้อมูล จากฐานข้อมูล ต้องการให้ได้ผลลัพธ์มาแ่ค่บรรทัดเดียวอ่ะค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 02
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 อัตราราคา คลิกที่นี่