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 > กระทู้สำหรับภาษาต่าง ๆ > เอาข้อมูลที่ต้องการมา union กัน แล้วก้มา left join แล้วข้อมูลตารางที่ 2 ออกไม่ครบ ตารางแรกออกครบถ้วน



เอาข้อมูลที่ต้องการมา union กัน แล้วก้มา left join แล้วข้อมูลตารางที่ 2 ออกไม่ครบ ตารางแรกออกครบถ้วน

 
Topic : 078144

Guest



เอาข้อมูลที่ต้องการมา union กัน แล้วก้มา left join แล้วข้อมูลตารางที่ 2 ออกไม่ครบ
ตารางแรกออกครบถ้วน ใครทราบรบกวนตอบด้วยนะคะ

ผลที่ออก

กระจกเทมเปอร์ xxxxx1 57633.68 112779.17
กระจกเทมเปอร์ โสดา 21532
กระจกลามิเนท รัชนี 101891 27872
กระจกใส จันทร์ 52766

ถ้าใช้ full join ข้อมูลที่หายไปของตารางที่สองจะออกแบบนี้

กระจกเทมเปอร์ xxxxx1 57633.68 112779.17
กระจกเทมเปอร์ โสดา 21532
กระจกลามิเนท รัชนี 101891 27872
กระจกใส จันทร์ 52766
15900
37890



Code
select t1.name1, t1.salesman, t1.total_price, t2.total_price1 from (
(select res_users.id, 'กระจกเทมเปอร์' as name1,
res_users.name as salesman,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price
from sale_order
left join res_partner on res_partner.id = sale_order.partner_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
where sale_order.requested_date between '2012-05-01' and '2012-05-07'
and sale_order.state = 'done'
and product_product.default_code like 'st%'
and not (product_product.default_code like 'stc%' or default_code like 'stb%')
and not res_partner.id = '874'
group by res_users.id,salesman)
union
(select res_users.id, 'กระจกลามิเนท' as name1,
res_users.name as salesman,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price
from sale_order
left join res_partner on res_partner.id = sale_order.partner_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
where sale_order.requested_date between '2012-05-01' and '2012-05-07'
and sale_order.state = 'done'
and product_product.default_code like 'sl%'
group by res_users.id,salesman)
union
(select res_users.id, 'กระจกธรรมดา' as name1,
res_users.name as salesman,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price
from sale_order
left join res_partner on res_partner.id = sale_order.partner_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
where sale_order.requested_date between '2012-05-01' and '2012-05-07'
and sale_order.state = 'done'
and product_product.default_code like 'sa%'
and not (product_product.default_code like 'sac%' or default_code like 'sab%')
group by res_users.id,salesman)
union
(select res_users.id, 'กระจกพ่นสี-พ่นทราย' as name1,
res_users.name as salesman,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price
from sale_order
left join res_partner on res_partner.id = sale_order.partner_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
where sale_order.requested_date between '2012-05-01' and '2012-05-07'
and sale_order.state = 'done'
and (product_product.default_code like 'sac%' or default_code like 'stc%' or default_code like 'sab%' or default_code like 'stb%')
group by res_users.id,salesman)) t1

left join

((select res_users.id, 'กระจกเทมเปอร์' as name1,
res_users.name as salesman1,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price1
from sale_order
left join res_partner on res_partner.id = sale_order.partner_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
where sale_order.requested_date = '2012-05-07'
and sale_order.state = 'done'
and product_product.default_code like 'st%'
and not (product_product.default_code like 'stc%' or default_code like 'stb%')
and not res_partner.id = '874'
group by res_users.id,salesman1)
union
(select res_users.id, 'กระจกลามิเนท' as name1,
res_users.name as salesman1,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price1
from sale_order
left join res_partner on res_partner.id = sale_order.partner_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
where sale_order.requested_date = '2012-05-07'
and sale_order.state = 'done'
and product_product.default_code like 'sl%'
group by res_users.id,salesman1)
union
(select res_users.id, 'กระจกธรรมดา' as name1,
res_users.name as salesman1,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price1
from sale_order
left join res_partner on res_partner.id = sale_order.partner_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
where sale_order.requested_date = '2012-05-07'
and sale_order.state = 'done'
and product_product.default_code like 'sa%'
and not (product_product.default_code like 'sac%' or default_code like 'sab%')
group by res_users.id,salesman1)
union
(select res_users.id, 'กระจกพ่นสี-พ่นทราย' as name1,
res_users.name as salesman1,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price1
from sale_order
left join res_partner on res_partner.id = sale_order.partner_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
where sale_order.requested_date = '2012-05-07'
and sale_order.state = 'done'
and (product_product.default_code like 'sac%' or default_code like 'stc%' or default_code like 'sab%' or default_code like 'stb%')
group by res_users.id,salesman1)) t2 on t1 = t2
order by t1.name1, t1.salesman, t2.salesman1, t1.total_price, t2.total_price1




Tag : PostgreSQL


Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-05-08 13:03:34 By : mumi View : 1545 Reply : 3
 

 

No. 1



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



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


เพิ่งเคยเจอคำสั่ง query ยาวขนาดนี้

คงต้องขอดู table ต่างๆ ที่เกี่ยวข้องแหละครับ ถึงจะรู้ว่าขาดหายอะไรไป

อีกอย่างถ้าเป็นผมจะทำการ query ข้อมูลหลักๆ
แล้วเอาแต่ละค่ามาเขียนโค้ดคำนวณจะสะดวกกว่า
แสดงผลได้ตรงตามที่ต้องการมากกว่า
อีกอย่าง คือ สามารถตวจสอบได้ง่ายว่า ตรงไหนที่ผิด

แต่ก็แล้วแต่ความถนัดครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-08 13:29:54 By : slipknot1256
 


 

No. 2

Guest


ถ้ายังไม่ได้มา left join กัน ข้อมูลออกถูกต้อง

ที่จริงทั้งสองตารางต่างกันแค่

ต้องการยอดขายปัจจุบัน กับยอดขายสะสมค่ะ

จากcode เก่า ถ้าไม่เอา name1 เพิ่มเข้ามา code เก่าเป็นแบบนี้ค่ะ

ข้อมูลออกมาถูกต้อง

Code
select t1.salesman, t1.total_price, t2.total_price1 from (
(select res_users.id,
res_users.name as salesman,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price
from sale_order
left join res_company on res_company.id = sale_order.company_id
left join res_partner on res_partner.id = sale_order.partner_id
left join res_partner_address on res_partner_address.id = sale_order.partner_invoice_id
left join res_partner_address as cusship on cusship.id = sale_order.partner_shipping_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_uom on product_uom.id = sale_order_line.product_uom
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
left join product_template on product_product.product_tmpl_id = product_template.id
left join product_category on product_template.categ_id = product_category.id
left join product_thick on product_product.thick = product_thick.id
where sale_order.requested_date between '2012-05-01' and '2012-05-07'
and sale_order.state = 'done'
and (product_product.default_code like 'st%'
or default_code like 'sl%'
or default_code like 'sa%'
or default_code like 'sac%'
or default_code like 'stc%'
or default_code like 'sab%'
or default_code like 'stb%')
group by res_users.id, res_users.name)) t1
left join
((select res_users.id,
res_users.name as salesman1,
sum(ROUND((coalesce(sale_order_line.price_unit,0)* coalesce(product_uom_qty,0)),2)) as total_price1
from sale_order
left join res_company on res_company.id = sale_order.company_id
left join res_partner on res_partner.id = sale_order.partner_id
left join res_partner_address on res_partner_address.id = sale_order.partner_invoice_id
left join res_partner_address as cusship on cusship.id = sale_order.partner_shipping_id
left join sale_order_line on sale_order_line.order_id = sale_order.id
left join product_uom on product_uom.id = sale_order_line.product_uom
left join product_product on sale_order_line.product_id = product_product.id
left join res_users on res_users.id = sale_order.user_id
left join product_template on product_product.product_tmpl_id = product_template.id
left join product_category on product_template.categ_id = product_category.id
left join product_thick on product_product.thick = product_thick.id
where sale_order.requested_date = '2012-05-07'
and sale_order.state = 'done'
and (product_product.default_code like 'st%'
or default_code like 'sl%'
or default_code like 'sa%'
or default_code like 'sac%'
or default_code like 'stc%'
or default_code like 'sab%'
or default_code like 'stb%')
group by res_users.id, salesman1)) t2 on t1.id = t2.id

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-08 13:43:18 By : mumi
 


 

No. 3

Guest


ไม่มีใครมาตอบต่อเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-12 10:11:23 By : mumi
 


   

ค้นหาข้อมูล


   
 

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