กระทู้เก่าบอร์ด อ.Yeadram
1,586 5
URL.หัวข้อ /
URL
ขึ้นฟ้อง Circular reference caused by 'QryDep'.
พอดีผมทำ Query ซ้อนกันถึง 3 ชั้นเพื่อจะเอาข้อมูลที่มีการคำนวนย่อยลงมา แต่พอ save แล้ว พอเปิดขึ้นมาใหม่กับฟ้อง Circular reference caused by 'QryDep'. ไม่ทราบเป็นเพราะอะไร ช่วยแนะนำด้วยครับ
ขอบคุณครับ
paitoon
ขอบคุณครับ
paitoon
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R01445
sql ครับ
SELECT tblGROUP_detail.GROU_CODE, tblGROUP_detail.GROU_NAME, tblMACHINE.DEP_CODE, tblMACHINE.LINE_CODE, tblMACHINE.MC_ID, tblMACHINE.MC_CODE, tblMACHINE.MC_NAME, tblMACHINE.ASSET, tblMACHINE.KW, tblMACHINE.PRICE, (select count(MC_CODE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS Totalcount, (select Avg(PRICE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalAvg, [Totalcount]*[TotalAvg] AS TotalCost, Sub_SubQryDepreciation1.SumOfTotalCost
FROM Sub_SubQryDepreciation1 INNER JOIN (tblGROUP_detail INNER JOIN tblMACHINE ON tblGROUP_detail.GROU_CODE=tblMACHINE.GROU_CODE) ON Sub_SubQryDepreciation1.LINE_CODE=tblMACHINE.LINE_CODE
GROUP BY tblGROUP_detail.GROU_CODE, tblGROUP_detail.GROU_NAME, tblMACHINE.DEP_CODE, tblMACHINE.LINE_CODE, tblMACHINE.MC_ID, tblMACHINE.MC_CODE, tblMACHINE.MC_NAME, tblMACHINE.ASSET, tblMACHINE.KW, tblMACHINE.PRICE, Sub_SubQryDepreciation1.SumOfTotalCost;
ช่วยแนะนำหน่อยครับต้องแก้ไขอย่างไรดี
ขอบคุณครับ
paitoon
SELECT tblGROUP_detail.GROU_CODE, tblGROUP_detail.GROU_NAME, tblMACHINE.DEP_CODE, tblMACHINE.LINE_CODE, tblMACHINE.MC_ID, tblMACHINE.MC_CODE, tblMACHINE.MC_NAME, tblMACHINE.ASSET, tblMACHINE.KW, tblMACHINE.PRICE, (select count(MC_CODE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS Totalcount, (select Avg(PRICE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalAvg, [Totalcount]*[TotalAvg] AS TotalCost, Sub_SubQryDepreciation1.SumOfTotalCost
FROM Sub_SubQryDepreciation1 INNER JOIN (tblGROUP_detail INNER JOIN tblMACHINE ON tblGROUP_detail.GROU_CODE=tblMACHINE.GROU_CODE) ON Sub_SubQryDepreciation1.LINE_CODE=tblMACHINE.LINE_CODE
GROUP BY tblGROUP_detail.GROU_CODE, tblGROUP_detail.GROU_NAME, tblMACHINE.DEP_CODE, tblMACHINE.LINE_CODE, tblMACHINE.MC_ID, tblMACHINE.MC_CODE, tblMACHINE.MC_NAME, tblMACHINE.ASSET, tblMACHINE.KW, tblMACHINE.PRICE, Sub_SubQryDepreciation1.SumOfTotalCost;
ช่วยแนะนำหน่อยครับต้องแก้ไขอย่างไรดี
ขอบคุณครับ
paitoon
3 @R01446
เพิ่มเติมครับ sql แรกที่ส่งก่อนหน้านี้ คือ Query ที่ต้องใช้ข้อมธล
ส่วน 2 Query นี้ เป็นส่วยย่อยจากการ sum เพื่อเอาไปผูกกับ Query แรก
sql ย่อยส่วนที่ 1 ที่ดึงมากจาก Query แรก
SELECT QryDepreciation.LINE_CODE, QryDepreciation.TotalCost
FROM QryDepreciation
GROUP BY QryDepreciation.LINE_CODE, QryDepreciation.TotalCost;
sql ย่อยส่วนที่ 2 ที่ดึงมากจาก Query ย่อยของส่วนที่ 1
SELECT SubQryDepreciation1.LINE_CODE, Sum(SubQryDepreciation1.TotalCost) AS SumOfTotalCost
FROM SubQryDepreciation1
GROUP BY SubQryDepreciation1.LINE_CODE;
พอได้ผลจากการ sum ของส่วนย่อยที่ 2 แล้วผมก็เอาไปรวมไว้ Query แรกก่อนหน้านี้ครับ
paitoon
ส่วน 2 Query นี้ เป็นส่วยย่อยจากการ sum เพื่อเอาไปผูกกับ Query แรก
sql ย่อยส่วนที่ 1 ที่ดึงมากจาก Query แรก
SELECT QryDepreciation.LINE_CODE, QryDepreciation.TotalCost
FROM QryDepreciation
GROUP BY QryDepreciation.LINE_CODE, QryDepreciation.TotalCost;
sql ย่อยส่วนที่ 2 ที่ดึงมากจาก Query ย่อยของส่วนที่ 1
SELECT SubQryDepreciation1.LINE_CODE, Sum(SubQryDepreciation1.TotalCost) AS SumOfTotalCost
FROM SubQryDepreciation1
GROUP BY SubQryDepreciation1.LINE_CODE;
พอได้ผลจากการ sum ของส่วนย่อยที่ 2 แล้วผมก็เอาไปรวมไว้ Query แรกก่อนหน้านี้ครับ
paitoon
4 @R01452
นี่คือ object เริ่มต้นของคุณ
1
TYPE TABLE
NAME tblMachine
FIELD MC_ID, MC_CODE, MC_NAME, GROU_CODE, DEP_CODE, LINE_CODE, ASSET, KW, PRICE , etc.
2
TYPE TABLE
NAME tblGROUP_detail
FIELD GROU_CODE, GROU_NAME, etc.
3 อันที่3 นี่เดาเต็มๆ
TYPE Query
NAME QryDepreciation
FIELD LINE_CODE, TotalCost, etc.
SQL SELECT tblMachine.LINE_CODE, tblMachine.PRICE AS TotalCost
FROM tblMachine;
คุณต้องการหา...
1 หาว่าเครื่องจักรตัวนี้ชื่ออะไร จัดอยู่กลุ่มไหน ต้นทุนเท่าไหร่ อยู่ในไลน์การผลิตไหน
2 หาว่า จำนวนเครืองจักรในกลุ่มนี้มีกี่ตัว (TotalCount)
3 หาว่า เครื่องจักรในกลุ่มนี้ มีราคาเฉลี่ยเท่าไหร่ (TotalAvg)
4 หาว่า เครื่องจักรในกลุ่มนี้ ราคาเฉลี่ยโดยรวม เท่าไหร่ (TotalCost)
5 หาว่าเครื่องจักรทั้งหมดในไลน์การผลิตนี้ ต้นทุนรวมเท่าไหร่ (SumOfTotalCost)
ส่วนที่คุณทำมา ผมหาไม่เจอว่ามันมีจุดผิดตรงไหนเหมือนกัน แต่ผมลองเขียนอันใหม่ดูครับ
SELECT tblGROUP_detail.GROU_CODE, GROU_NAME, DEP_CODE, tblMachine.LINE_CODE, MC_ID, MC_CODE, MC_NAME, ASSET, KW, PRICE,
(select count(MC_CODE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalCount,
(select Avg(PRICE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalAvg,
[Totalcount]*[TotalAvg] AS TotalCost, Q.tc AS SumOfTotalCost
FROM (tblGROUP_detail INNER JOIN tblMACHINE ON tblGROUP_detail.GROU_CODE = tblMACHINE.GROU_CODE) INNER JOIN
(SELECT LINE_CODE, Sum(TotalCost) AS tc FROM QryDepreciation GROUP BY LINE_CODE) AS Q
ON tblMACHINE.LINE_CODE = Q.LINE_CODE;
หรือถ้าคิวรี่อันที่ 3 ของคุณ ผมเดามันถูกว่า มันเขียนอย่างนั้นจริง คุณก็อาจไม่จำเป็นต้องใช้มันก็ได้
SELECT tblGROUP_detail.GROU_CODE, GROU_NAME, DEP_CODE, tblMachine.LINE_CODE, MC_ID, MC_CODE, MC_NAME, ASSET, KW, PRICE,
(select count(MC_CODE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalCount,
(select Avg(PRICE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalAvg,
[Totalcount]*[TotalAvg] AS TotalCost, Q.tc AS SumOfTotalCost
FROM (tblGROUP_detail INNER JOIN tblMACHINE ON tblGROUP_detail.GROU_CODE = tblMACHINE.GROU_CODE) INNER JOIN
(SELECT LINE_CODE, Sum(PRICE) AS tc FROM tblMachine GROUP BY LINE_CODE) AS Q
ON tblMACHINE.LINE_CODE = Q.LINE_CODE;
1
TYPE TABLE
NAME tblMachine
FIELD MC_ID, MC_CODE, MC_NAME, GROU_CODE, DEP_CODE, LINE_CODE, ASSET, KW, PRICE , etc.
2
TYPE TABLE
NAME tblGROUP_detail
FIELD GROU_CODE, GROU_NAME, etc.
3 อันที่3 นี่เดาเต็มๆ
TYPE Query
NAME QryDepreciation
FIELD LINE_CODE, TotalCost, etc.
SQL SELECT tblMachine.LINE_CODE, tblMachine.PRICE AS TotalCost
FROM tblMachine;
คุณต้องการหา...
1 หาว่าเครื่องจักรตัวนี้ชื่ออะไร จัดอยู่กลุ่มไหน ต้นทุนเท่าไหร่ อยู่ในไลน์การผลิตไหน
2 หาว่า จำนวนเครืองจักรในกลุ่มนี้มีกี่ตัว (TotalCount)
3 หาว่า เครื่องจักรในกลุ่มนี้ มีราคาเฉลี่ยเท่าไหร่ (TotalAvg)
4 หาว่า เครื่องจักรในกลุ่มนี้ ราคาเฉลี่ยโดยรวม เท่าไหร่ (TotalCost)
5 หาว่าเครื่องจักรทั้งหมดในไลน์การผลิตนี้ ต้นทุนรวมเท่าไหร่ (SumOfTotalCost)
ส่วนที่คุณทำมา ผมหาไม่เจอว่ามันมีจุดผิดตรงไหนเหมือนกัน แต่ผมลองเขียนอันใหม่ดูครับ
SELECT tblGROUP_detail.GROU_CODE, GROU_NAME, DEP_CODE, tblMachine.LINE_CODE, MC_ID, MC_CODE, MC_NAME, ASSET, KW, PRICE,
(select count(MC_CODE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalCount,
(select Avg(PRICE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalAvg,
[Totalcount]*[TotalAvg] AS TotalCost, Q.tc AS SumOfTotalCost
FROM (tblGROUP_detail INNER JOIN tblMACHINE ON tblGROUP_detail.GROU_CODE = tblMACHINE.GROU_CODE) INNER JOIN
(SELECT LINE_CODE, Sum(TotalCost) AS tc FROM QryDepreciation GROUP BY LINE_CODE) AS Q
ON tblMACHINE.LINE_CODE = Q.LINE_CODE;
หรือถ้าคิวรี่อันที่ 3 ของคุณ ผมเดามันถูกว่า มันเขียนอย่างนั้นจริง คุณก็อาจไม่จำเป็นต้องใช้มันก็ได้
SELECT tblGROUP_detail.GROU_CODE, GROU_NAME, DEP_CODE, tblMachine.LINE_CODE, MC_ID, MC_CODE, MC_NAME, ASSET, KW, PRICE,
(select count(MC_CODE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalCount,
(select Avg(PRICE) from tblMACHINE where GROU_CODE = tblGROUP_detail.GROU_CODE) AS TotalAvg,
[Totalcount]*[TotalAvg] AS TotalCost, Q.tc AS SumOfTotalCost
FROM (tblGROUP_detail INNER JOIN tblMACHINE ON tblGROUP_detail.GROU_CODE = tblMACHINE.GROU_CODE) INNER JOIN
(SELECT LINE_CODE, Sum(PRICE) AS tc FROM tblMachine GROUP BY LINE_CODE) AS Q
ON tblMACHINE.LINE_CODE = Q.LINE_CODE;
5 @R01455
ต้องขอบคุณ คุณ yeadram มากเลยครับ ที่หาสาเหตุให้อย่างระเอียด ที่กล่าวมาทั้งหมด 5 ข้อ ถูกทุกข้อเลยครับ
1 หาว่าเครื่องจักรตัวนี้ชื่ออะไร จัดอยู่กลุ่มไหน ต้นทุนเท่าไหร่ อยู่ในไลน์การผลิตไหน
2 หาว่า จำนวนเครืองจักรในกลุ่มนี้มีกี่ตัว (TotalCount)
3 หาว่า เครื่องจักรในกลุ่มนี้ มีราคาเฉลี่ยเท่าไหร่ (TotalAvg)
4 หาว่า เครื่องจักรในกลุ่มนี้ ราคาเฉลี่ยโดยรวม เท่าไหร่ (TotalCost)
5 หาว่าเครื่องจักรทั้งหมดในไลน์การผลิตนี้ ต้นทุนรวมเท่าไหร่ (SumOfTotalCost)
แต่ผมลองทำไปเลื่อย ๆ ผมลองสร้าง QryDepreciation ตัวใหม่ เสมือนมี 2 Query เพื่อไม่ให้มีการดึง QryDepreciation วนดึงข้อมูลกัน เหมือนเป็นการหมุนวนค่า ทำให้ไม่ฟ้องอีก ผมก็เลยใช้วิธีนี้
ต้องขอบคุณ คุณ yeadram มากครับผมที่ให้คำแนะนำครับ
paitoon
1 หาว่าเครื่องจักรตัวนี้ชื่ออะไร จัดอยู่กลุ่มไหน ต้นทุนเท่าไหร่ อยู่ในไลน์การผลิตไหน
2 หาว่า จำนวนเครืองจักรในกลุ่มนี้มีกี่ตัว (TotalCount)
3 หาว่า เครื่องจักรในกลุ่มนี้ มีราคาเฉลี่ยเท่าไหร่ (TotalAvg)
4 หาว่า เครื่องจักรในกลุ่มนี้ ราคาเฉลี่ยโดยรวม เท่าไหร่ (TotalCost)
5 หาว่าเครื่องจักรทั้งหมดในไลน์การผลิตนี้ ต้นทุนรวมเท่าไหร่ (SumOfTotalCost)
แต่ผมลองทำไปเลื่อย ๆ ผมลองสร้าง QryDepreciation ตัวใหม่ เสมือนมี 2 Query เพื่อไม่ให้มีการดึง QryDepreciation วนดึงข้อมูลกัน เหมือนเป็นการหมุนวนค่า ทำให้ไม่ฟ้องอีก ผมก็เลยใช้วิธีนี้
ต้องขอบคุณ คุณ yeadram มากครับผมที่ให้คำแนะนำครับ
paitoon
Time: 0.3268s
ขอดู sql ครับ