กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
296 1
URL.หัวข้อ /
URL
ถ้าต้องการสร้างคิวรี่ที่รวมเอาข้อมูลบางฟิลด์ของทั้ง 8 ตารางมาโชว์รวมเป็นตารางเดียวเนี่ยต้องทำยังไง
สมมุติว่าเรามีตารางอยู่ 8 ตารางนะครับ ถ้าต้องการสร้างคิวรี่ที่รวมเอาข้อมูลบางฟิลด์ของทั้ง 8 ตารางมาโชว์รวมเป็นตารางเดียวเนี่ยต้องทำยังไง คือเคยลองทำแล้วครับ แต่ว่าในส่วนของ sql =
SELECT [tblDefect Data].[Defect Code], [tblDefect Data].[Customer Name], [tblDefect Data].[Part Ref], tblBoardInfo.[Board Name], tblBoardInfo.Chassis, tblModelInfo.[MODEL NAME ], tblBoardInfo.Surface, tblBoardInfo.[LH(0)/CL(1)], tblBoardInfo.[Insertion Pitch], tblBoardInfo.[AI(0)/HM(1)], tblBoardInfo.[Shape Code]
FROM tblModelInfo INNER JOIN ((tblDefectCode INNER JOIN (tblBoardInfo INNER JOIN (tblCustomer INNER JOIN [tblDefect Data] ON (tblCustomer.[Customer Name] = [tblDefect Data].[Customer Name]) AND (tblCustomer.[Customer Name] = [tblDefect Data].[Customer Name])) ON tblBoardInfo.[Part Ref] = [tblDefect Data].[Part Ref]) ON tblDefectCode.[Defect Code] = [tblDefect Data].[Defect Code]) INNER JOIN Production_full ON [tblDefect Data].[JON Number] = Production_full.JON) ON tblModelInfo.[MODEL NAME ] = [tblDefect Data].ModelName;
คือดูจากโค๊ดแล้วมันเหมือนกับต้องตรงทุกคอนดิชั่น ถึงจะโชว์ผลลัพธ์ใช่ไหมครับ แล้วถ้าผมต้องการให้ตรงแค่อย่างน้อยคอนดิชั่นเดียวก็ให้แสดงผลเลยอ่ะครับ ส่วน ฟิลด์อื่นที่ไม่มีข้อมูลก็ให้แสดงช่องว่างไปอ่ะครับ อย่างนี้จะมีทางทำได้หรือเปล่าอ่ะ
ตัวอย่างนะครับ
------------------------------------------------------------------------------------------------------------------
l Part Ref l CustomerName l Chassis l AI(0)/HM(1) l Shape Code l
------------------------------------------------------------------------------------------------------------------
l C10 l PTG company l PA-6 l 0 l K l
l C2200 l l PA-6 l 1 l l
l D11 l STE Company l l 0 l M l
l C222 l AIS Company l l 0 l l
l D11 l STE Company l l 0 l M l
l D11 l STE Company l l l M l
l D11 l STE Company l l 0 l M l
l D11 l STE Company l l 0 l l
l D11 l STE Company l l l M l
l D11 l STE Company l l 0 l M l
------------------------------------------------------------------------------------------------------------------
ให้มันเป็นประมาณข้างบนนี้จะเป็นไปได้ไหมครับ คือถ้าฟิลด์ไหนมีข้อมูลที่เกี่ยวข้องก็แสดงออกมา แต่ถ้าฟิลด์ไหนไม่มีข้อมูลก็ว่างๆไว้อย่างงี้อ่ะครับ
กระทู้นี้เป็นกระทู้ต่อเนื่องจาก DynamicQuery นะครับ
ยังไงก็รบกวนเพื่อนๆพี่ๆช่วยด้วยนะครับ ตอนนี้จนปัญญาจริงๆ
ขอบคุณล่วงหน้าครับ
SELECT [tblDefect Data].[Defect Code], [tblDefect Data].[Customer Name], [tblDefect Data].[Part Ref], tblBoardInfo.[Board Name], tblBoardInfo.Chassis, tblModelInfo.[MODEL NAME ], tblBoardInfo.Surface, tblBoardInfo.[LH(0)/CL(1)], tblBoardInfo.[Insertion Pitch], tblBoardInfo.[AI(0)/HM(1)], tblBoardInfo.[Shape Code]
FROM tblModelInfo INNER JOIN ((tblDefectCode INNER JOIN (tblBoardInfo INNER JOIN (tblCustomer INNER JOIN [tblDefect Data] ON (tblCustomer.[Customer Name] = [tblDefect Data].[Customer Name]) AND (tblCustomer.[Customer Name] = [tblDefect Data].[Customer Name])) ON tblBoardInfo.[Part Ref] = [tblDefect Data].[Part Ref]) ON tblDefectCode.[Defect Code] = [tblDefect Data].[Defect Code]) INNER JOIN Production_full ON [tblDefect Data].[JON Number] = Production_full.JON) ON tblModelInfo.[MODEL NAME ] = [tblDefect Data].ModelName;
คือดูจากโค๊ดแล้วมันเหมือนกับต้องตรงทุกคอนดิชั่น ถึงจะโชว์ผลลัพธ์ใช่ไหมครับ แล้วถ้าผมต้องการให้ตรงแค่อย่างน้อยคอนดิชั่นเดียวก็ให้แสดงผลเลยอ่ะครับ ส่วน ฟิลด์อื่นที่ไม่มีข้อมูลก็ให้แสดงช่องว่างไปอ่ะครับ อย่างนี้จะมีทางทำได้หรือเปล่าอ่ะ
ตัวอย่างนะครับ
------------------------------------------------------------------------------------------------------------------
l Part Ref l CustomerName l Chassis l AI(0)/HM(1) l Shape Code l
------------------------------------------------------------------------------------------------------------------
l C10 l PTG company l PA-6 l 0 l K l
l C2200 l l PA-6 l 1 l l
l D11 l STE Company l l 0 l M l
l C222 l AIS Company l l 0 l l
l D11 l STE Company l l 0 l M l
l D11 l STE Company l l l M l
l D11 l STE Company l l 0 l M l
l D11 l STE Company l l 0 l l
l D11 l STE Company l l l M l
l D11 l STE Company l l 0 l M l
------------------------------------------------------------------------------------------------------------------
ให้มันเป็นประมาณข้างบนนี้จะเป็นไปได้ไหมครับ คือถ้าฟิลด์ไหนมีข้อมูลที่เกี่ยวข้องก็แสดงออกมา แต่ถ้าฟิลด์ไหนไม่มีข้อมูลก็ว่างๆไว้อย่างงี้อ่ะครับ
กระทู้นี้เป็นกระทู้ต่อเนื่องจาก DynamicQuery นะครับ
ยังไงก็รบกวนเพื่อนๆพี่ๆช่วยด้วยนะครับ ตอนนี้จนปัญญาจริงๆ
ขอบคุณล่วงหน้าครับ
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R00302
ถ้าดูตามโค้ดแล้ว คุณต้องการเพียงตาราง 2 ตาราง คือ tblDefect Data และ tblBoardInfo แค่นั้น เลยไม่จำเป็นจะต้องดึงตารางอื่นขึ้นมาแสดงด้วย
SELECT [tblDefect Data].[Defect Code], [tblDefect Data].[Customer Name], [tblDefect Data].[Part Ref], tblBoardInfo.[Board Name], tblBoardInfo.Chassis, tblBoardInfo.Surface, tblBoardInfo.[LH(0)/CL(1)], tblBoardInfo.[Insertion Pitch], tblBoardInfo.[AI(0)/HM(1)], tblBoardInfo.[Shape Code]
FROM tblBoardInfo INNER JOIN [tblDefect Data] ON tblBoardInfo.[Part Ref] = [tblDefect Data].[Part Ref];
ถ้าต้องการจะให้แสดงข้อมูลด้วย อาจจะต้องใช้ Left Join หรือ Right Join เพื่อรวมข้อมูลของอีกตารางเข้าไปด้วย แม้ว่าจะไม่มีความเกี่ยวข้องก็ตาม ซึ่งแล้วแต่ความต้องการที่จะใช้ผลลัพธ์ว่าต้องการเอาไปทำอะไร
การทำ Left Join จะทำโดยการเปิด query แล้ว คลิก 2 ทีที่เส้นความสัมพันธ์ แล้วเลือกเอาตัวเลือกที่ 2 หรือ 3 แล้วแต่ความต้องการ
ลองดูครับ
Time: 0.1124s