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,027

HOME > PHP > PHP Forum > select 2 ตาราง ที่มีข้อมูล เหมือน กัน และไม่เหมือนกัน โดย group by name_a และ name_b ค่าที่ได้



 

select 2 ตาราง ที่มีข้อมูล เหมือน กัน และไม่เหมือนกัน โดย group by name_a และ name_b ค่าที่ได้

 



Topic : 123023



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



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




tb_A
name_a, status_a
ส้ม ,1
พริก ,1
แตงโม ,1
กล้วย ,1
มะขาม, 0
มะละกอ ,1

tb_ฺB
name_b, status_b
ส้ม, 1
กล้วย ,1
มะขาม ,0
มะละกอ ,1

ผลลัพธ์
ส้ม, 1
พริก,1
แตงโม , 1
กล้วย 1
มะละกอ 1

แบบนี้ ต้อง select แบบไหนครับ
เอา 2 ตารางมาเปรียบเทียบกัน แล้วเช็คว่า status_a และ status_b ไม่เท่ากับ 0



Tag : PHP, HTML/CSS, Action Script, Ajax, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-05-21 10:07:46 By : rock_rock View : 6506 Reply : 21
 

 

No. 1



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



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


รบกวนด้วยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-23 15:31:34 By : rock_rock
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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

Capture โครงสร้างและ Result ที่อยากได้ มาดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-24 09:49:50 By : mr.win
 

 

No. 3



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



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


ดึง name_a และ name_b มารวมกัน แล้ว groub by แล้วนำมาเก็บใน ตัวแปร NAME ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-24 16:11:55 By : rock_rock
 


 

No. 4

Guest


@PT_Rock เกือบถูกแระ อีกนิดเดียว

union แล้ว group by ต้อง group by name, status จากนั้นก็ having status != 0


ปล. ใช้ union, intersec ก็ได้

หรือ inner join, outer join ก็ได้

ได้หลายวิธี
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-24 16:24:47 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 5



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



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


$sql="select name , status from tb_a group by name
UNION ALL
select name , status from tb_b group by name ";
ลองแบบนี้แล้ว group by ไม่ได้ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-24 18:24:39 By : rock_rock
 


 

No. 6



โพสกระทู้ ( 9,542 )
บทความ ( 2 )



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


Code (SQL)
select table1.* from table1 inner join table2
on table1.name=table2.name and table1.status = table2.status
where table1.status=1 
group by table1.name

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-24 21:23:35 By : Chaidhanan
 


 

No. 7

Guest


@PT_Rock

Code (SQL)
select c.name, c.status from (a union b) as c group by c.name, c.status having c.status != 0;

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 08:38:00 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 8



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



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


ตอบความคิดเห็นที่ : 6 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-05-24 21:23:35
รายละเอียดของการตอบ ::

Code
ถ้ามีใน a และมีใน b จะดึงมา ครับ แต่ มีบาง ตัว ที่ มีใน b แต่ไม่มีใน a หละครับ และบางตัว มี ใน a แต่ไม่มีใน b เลยอยากให้ 2 ตารางรวมกัน แล้ว group by name_a ตาราง a และ groub by name_b ตาราง b รวมกัน ครับ เช่น tb_a name_a,status_a ดินสอ ปากกา ยางลย ta_b name_b , status_b ไม้บรรทัด ปากกา ลิขวิด ผลลัพธ์ ที่อยากได้ คือ ดินสอ ปากกา ยางลบ ไม้บรรทัด ลิขวิด


และ status_a , status_b ไม่เท่ากับ 0




แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 11:35:05 By : rock_rock
 


 

No. 9



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



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


ตอบความคิดเห็นที่ : 7 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-25 08:38:00
รายละเอียดของการตอบ ::
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`ta_a`) as c group by c.name, c.status having c.status != 0' at line 1

แจ้ง แบบนี้ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 11:37:57 By : rock_rock
 


 

No. 10

Guest


@PT_Rock แก้ให้ถูกสิจ๊ะ

ปล. เราแค่ไกด์ ไม่ได้เขียนเต็ม เครื่องหมาย != เราตั้งใจ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 13:02:08 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 11



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-25 13:02:08
รายละเอียดของการตอบ ::

ขอบคุณสำหรับแนวทางครับ

select c.name , c.status
from (select name_a, status_a, from a
UNION
select name_b ,status_b from b) as c
group by c.name , c.status having c.status != 0

จะเรียงตาม c.name ยังไงครับ

select c.name , c.status
from (select name_a, status_a, from a
UNION
select name_b ,status_b from b) as c
group by c.name ASC, c.status having c.status != 0

group by c.name ASC, c.status having c.status != 0
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 15:48:27 By : rock_rock
 


 

No. 12

Guest


...
group by c.name, s.status having...
order by c.name desc
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 16:12:41 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 13



โพสกระทู้ ( 9,542 )
บทความ ( 2 )



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


Code (SQL)
select distinct * from ( 
select a.* from a where status>0 and not exists( select name from b where name=a.name and status>0)
union all
select b.* from b where status>0 and not exists( select name from a where name=b.name and status>0) 
) as tmp

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-25 18:47:09 By : Chaidhanan
 


 

No. 14



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



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


ตอบความคิดเห็นที่ : 13 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-05-25 18:47:09
รายละเอียดของการตอบ ::
ขอบคุณ ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-26 09:58:32 By : rock_rock
 


 

No. 15



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



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


ตอบความคิดเห็นที่ : 7 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-25 08:38:00
รายละเอียดของการตอบ ::

select c.name, c.status from (a union b) as c group by c.name, c.status having c.status != 0;

ถ้าเราเพิ่ม อีกตาราง คือ ตาราง e
โดยมี
ืname เหมือนกัน กับ ตาราง a , b แค่ฟิว เดียว
แต่มีเพิ่ม company เข้าไป เพราะอยากให้ order by company (รูปแบบเป็น text)

โดย ให้ เรียง จากน้อยไปมาก
group by c.name และ order by c.company

select c.name, c.status c.company from (a union b union e) as c group by c.name, c.status having c.status != 0
order by c.company ASC

เช่น
tb_a
name_a,status_a
1
2
3


ta_b
name_b , status_b
4
2
5

ผลลัพธ์ ที่อยากได้ คือ
1
2
3
4
5

ta_e
ืname_e , company
1,จ
2,ค
3,ข
4,ก
5,ง

ผลลัพธ์ ออกมาเป็น ให้เรียง จาก company
ืname_e, company
4 , ก
3 , ข
2 , ค
5 , ง
1 , จ.

รบกวนอีกนิดครับ



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-26 11:07:50 By : rock_rock
 


 

No. 16

Guest


อัญเชิญคนละระดับต้องรอ 5 เทิร์นนะ

ยกเว้นมีการ์ดเวทมนต์ ลดระยะเวลาร่าย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-26 11:45:48 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 17

Guest


จริงๆ คืออยากให้ลแงคิดลองทำน่ะ

sql
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-26 11:53:30 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 18



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



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


ตอบความคิดเห็นที่ : 17 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-26 11:53:30
รายละเอียดของการตอบ ::

รูปแบบมันนาใช้ right join แต่ก็ไม่ได้อยู่ดีครับ

select c.name , c.status
from (select name_a, status_a, from a
UNION
select name_b ,status_b from b) as c
RIGHT JOIN
select name_e, company from e
ON name_e=c.name
group by c.name , c.status having c.status != 0

หรือ อีกแบบ ลอง

select c.name , c.status
from (select name_a, status_a, from a
UNION
select name_b ,status_b from b) as c
group by c.name , c.status having c.status != 0

query=mysql_query()
while(arr=mysql_fetch_array(){

$arr[name]


select * from e
where name_e=$arr[name]


ก็ไม่ได้ครับ
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-26 14:46:49 By : rock_rock
 


 

No. 19



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



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


ตอบความคิดเห็นที่ : 17 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-05-26 11:53:30
รายละเอียดของการตอบ ::
ได้แล้ว ครับ ขอบคุณมากมาย
ดึงค่าที่ได้มาครั้งแรก จากการ union เก็บไว้ c
แล้วก็ inner join กับ ta_e ที่เราเพิ่มเข้าไป โดย id เหมือนกัน แล้ว ดึงค่าตาราง e ออกมาแล้ว ก็ มา order by ตาราง e

////select * from table_1 tb1 inner join table_2 tb2 on tb1.tb_11= tb2.tb_21 inner join table_3 tb3 on tb1.tb_13 = tb3.tb_33

select c.name , c.status, e.name_e , e.company
from (select name_a, status_a, from a
UNION
select name_b ,status_b from b) as c

INNER JOIN company as e
ON c.name_a=e.name_e

group by c.name , c.status having c.status != 0
order by e.company ASC




ขอบคุณทุกท่านที่ช่วยตอบคำถาม คนไม่เก่งครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-27 11:41:07 By : rock_rock
 


 

No. 20



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



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


ถ้าเป็นผมนะเอาแบบดิบๆมั่วๆตามสไตล์

1. คิวรี่ธรรมดา SELECT * FROM tb_A WHERE status_a =1 แล้วเก็บผลลัพธ์ใส่อาเรย์
2. คิวรี่ธรรมดา SELECT * FROM tb_B WHERE status_b =1 แล้วเก็บผลลัพธ์ใส่อาเรย์

เอาอาเรย์สองตัวมารวมกัน แล้วใช้ array_unique ตัดค่าซ้ำในอาเรย์
เอามาแสดงผล จบ ... แปปเดียวเสร็จง่ายดาย ไม่ต้องจอยมันวุ่นวาย 555


ประวัติการแก้ไข
2016-05-28 01:46:08
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-28 01:45:15 By : meannerss
 


 

No. 21



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



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


ตอบความคิดเห็นที่ : 20 เขียนโดย : meannerss เมื่อวันที่ 2016-05-28 01:45:15
รายละเอียดของการตอบ ::
ขอบคุณแนวคิดคับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-05-28 13:12:29 By : rock_rock
 

   

ค้นหาข้อมูล


   
 

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