|
|
|
Query ข้อมูลไม่ได้ค่ะ SELECT a.StockCode, a.Description1, a.UserDefined3, a.ProductGroup, a.NetWe |
|
|
|
|
|
|
|
SELECT a.StockCode, a.Description1, a.UserDefined3, a.ProductGroup, a.NetWeight, a.SupplierCode, a.Purchaser, a.QueryQueNo, a.ExtProdGroup, a.AltProdGroup,
a.StdCostPric1, a.ArticlStatus, a.DelTimeWeek, a.DelTimeUnit, b.StockPM, a.ObsoleteDate, c.Qty
FROM ScalaDB.dbo.[V-SC0101-Stock file] a INNER JOIN
ScalaDB.dbo.StockExtend0100 b ON a.StockCode = b.SC01001 INNER JOIN
ScalaDB.dbo.[V-SC0701-Stock Transact] c ON b.SC01001 = c.StockCode
คือข้อมูลมันออกมาเกินจริงอะค่ะ จิงๆมีแค่ 42 เรคคอร์ด แต่ได้มาเป็น 1000 ซึ่งที่ต้องการคือจะเอา ตาราง a เป็นหลักอะค่ะ ต้องทำอย่างไรคะ
Tag : - - - -
|
|
|
|
|
|
Date :
2010-02-16 12:57:03 |
By :
somooo |
View :
1266 |
Reply :
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองใส GROUP BY
|
|
|
|
|
Date :
2010-02-16 12:59:32 |
By :
onedan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใส่แล้วค่ะ
เพียบเหมือนเดิมเลยค่ะ
|
|
|
|
|
Date :
2010-02-16 13:11:36 |
By :
somooo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันกลายเป็น one to many อะดิ
อย่างเช่น
table1
t1_id | data1
1 | xxx
2 | yyy
table2
t2_id | t1_id | data2
1 | 1 | aaaa
2 | 1 | bbbb
3 | 2 | cccc
4 | 2 | dddd
เวลา join กับมันเลยกลายเป็น 4 record
select [table1].*, [table2].[t2_id], [table2].[data2] from [table1] inner join [table2] on ([table1].[t1_id] = [table2].[t1_id])
ได้
t1_id | data1 | t2_id | data2
1 | xxx | 1 | aaaa
1 | xxx | 2 | bbbb
2 | yyy | 3 | cccc
2 | yyy | 4 | dddd
ดู data ดีๆ
|
|
|
|
|
Date :
2010-02-16 13:28:51 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช่เลยค่ะ มันเป็นอย่างที่คุณ tungman บอกเลยค่ะ
แล้วอย่างนี้ต้องทำอย่างไรหรอคะ
|
|
|
|
|
Date :
2010-02-16 17:15:54 |
By :
somooo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SELECT a.StockCode, a.Description1, a.UserDefined3, a.ProductGroup, a.NetWeight, a.SupplierCode, a.Purchaser, a.QueryQueNo, a.ExtProdGroup, a.AltProdGroup,
a.StdCostPric1, a.ArticlStatus, a.DelTimeWeek, a.DelTimeUnit, b.StockPM, a.ObsoleteDate, c.Qty
FROM ScalaDB.dbo.[V-SC0101-Stock file] a, ScalaDB.dbo.StockExtend0100 b, ScalaDB.dbo.[V-SC0701-Stock Transact] c
WHERE
a.StockCode = b.SC01001
AND
b.SC01001 = c.StockCode
ลองดูก่อนครับ ได้อย่างที่ต้องการหรือเปล่า ถ้าไม่ได้ แล้วจะเข้ามาดูให้ใหม่
|
|
|
|
|
Date :
2010-02-16 17:23:33 |
By :
numenoy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ได้ค่ะ เยอะเหมือนเดิมเลยค่ะ
|
|
|
|
|
Date :
2010-02-16 17:54:32 |
By :
somooo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเปลี่ยน inner join เป็น left join ทั้งหมดดูค่ะ เอาตารางยืน ไว้ซ้ายสุด
แล้ว make sure ลอง select ดู จำนวน record ของแต่ละตางรางดู
ว่าตัวไหนทำให้ query ป่องออกมายังงั้นค่ะ
|
|
|
|
|
Date :
2010-02-16 19:00:26 |
By :
blurEye |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ก็ว่า join ยังไง มันก็ออกมาเยอะอยู่ดี เพราะข้อมูลมันซ้ำกันอยู่จริงๆ หรือเปล่า น้องลองดูความสัมพันธ์กันแต่ละ table ให้ดีใหม่ครับ
พี่มี query อีกตัว อาจจะตอบโจทย์น้องได้
SELECT a.StockCode, a.Description1, a.UserDefined3, a.ProductGroup, a.NetWeight, a.SupplierCode, a.Purchaser, a.QueryQueNo, a.ExtProdGroup, a.AltProdGroup,
a.StdCostPric1, a.ArticlStatus, a.DelTimeWeek, a.DelTimeUnit, b.StockPM, a.ObsoleteDate, c.Qty
FROM ScalaDB.dbo.[V-SC0101-Stock file] a
INNER JOIN
(
SELECT b.SC01001
FROM ScalaDB.dbo.StockExtend0100 b, ScalaDB.dbo.[V-SC0701-Stock Transact] c
WHERE b.SC01001 = c.StockCode
) x
ON
a.StockCode = x.SC01001
|
|
|
|
|
Date :
2010-02-17 08:40:21 |
By :
numenoy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือ query มันถูก และอยู่ที่การตีความหมายตัวข้อมูลผิดเองใช่ปะคะ
เข้าใจว่า table1 - table2 - tabl3 จะมี relationship เป็น one-many สักที่
่join กันออกมาเลยได้จำนวนของ record เป็น 1000 ?
ซึ่งพอไปดู จำนวน record ของ table1 ก้อจะมี 42 record ?
เลยทำว่าให้คิดว่าผิด ?
คำถามที่ว่า query ไม่ได้ ผิดคำถามค่ะ
น่าจะเป็น query แล้วผลลัพธ์ที่ได้ไม่ใช่ที่ต้องการ
ถ้าคิดอย่างนี้แล้วคงต้องถามว่า query นี้ต้องการทำอะไรจากอะไร ค่ะ
|
|
|
|
|
Date :
2010-02-17 08:41:08 |
By :
blurEye |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|