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 > PHP > PHP Forum > [PHP, My sql] จะ Join ตาราง X 3 ฟิล ไป ตาราง Y 1 ฟิลยังไง (2 ตาราง)



 

[PHP, My sql] จะ Join ตาราง X 3 ฟิล ไป ตาราง Y 1 ฟิลยังไง (2 ตาราง)

 



Topic : 108316

Guest




หนูจะ Join โดย เทียบ ตาราง X 3 ฟิล ไป ตาราง Y 1 ฟิลยังไงคะ
โดยแสดงผล ตาราง X มี 3 ฟิล
A (แทนชื่อ (เว้น 1 วรรค) นามสกุล) ชื่อฟิล Programmer1
B (แทนชื่อ (เว้น 1 วรรค) นามสกุล) ชื่อฟิล Programmer2
C (แทนชื่อ (เว้น 1 วรรค) นามสกุล) ชื่อฟิล Programmer3

มีฟิลอื่นๆ อีก แต่แค่แสดง ฟิลที่ต้องใช้ทำงานต่อมี 3 ฟิลนี้ Programmer1 Programmer2 และ Programmer3

และใน ตาราง Y จะมี ฟิลต่างๆ ที่เก็บข้อมูลของ A B C
โดยในตาราง Y จะมี ฟิลที่ชื่อ Programmer ที่หนูใช้ JOIN กับ ตาราง X

โดยจะทำ ลิ้งที่ชื่อ โดยใช้
<A Href=\"profile.php?Programmer=$Programmer1\"> กับ A
<A Href=\"profile.php?Programmer=$Programmer2\"> กับ B
<A Href=\"profile.php?Programmer=$Programmer3\"> กับ C

เมื่อเรา คลิก A ก็จะ แสดงข้อมูล A ในตาราง X , คลิก B ก็จะ ข้อมูล B ในตาราง X แบบนี้
Code (PHP) หนูกำหนดแบบนี้ ใช้ OR ขั้น
$sql = "SELECT tbX.*,tbY.* FROM tbX,tbY WHERE (tbX.Programmer1 = tbY.Programmer) or (tbX.Programmer2 = tbY.Programmer) or (tbX.Programmer3 = tbY.Programmer) ";
$dbquery = mysql_query($sql, $connect) or die ("ส่งคิวรีไม่ได้");

		$result = mysql_fetch_array($dbquery);
		$Title= $result[Title];
		$Programmer = $result[Programmer];
	        $Case_study= $result[Case_study];
		$Program = $result[Program];
		$Birthday = $result[Birthday];
		$Address = $result[Address];
		$Tel = $result[Tel];
		$Study = $result[Study];


ตามโค๊ต
ผลที่ออกมาคือ มันโชว์ข้อมูลแค่ ของ A
ถ้ากดที่ ลิ๊งค์ของ B และ C มันโชว์แค่ ชื่อ B และ C ส่วนตัวอื่น เป็นของ A หมดเลย
เหมือนเปลี่ยนแค่ '$Program' เป็น A B และ C ส่วน ตัวแปรอื่น เป็นของ A หมดเลย

แต่ พอ สลับตำแหน่งของ WHERE จาก Programmer1 เป็น Programmer2 หรือ Programmer3
มันก็จะแสดงข้อมูล ในตาราง tbY ในลำดับแรกของ WHERE มันจะเปลี่ยนแค่ ชื่อ เป็น A B C เฉยๆ

หรือว่า กรณีตารางของหนู มัน Join กันไม่ได้คะ
ลองศึกษาในเว็บหลายเว็บแล้ว พอเข้าใจการทำงาน
แต่



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-05-13 19:02:52 By : แนน View : 1292 Reply : 6
 

 

No. 1



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



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


ขอดูรายละเอียดเยอะกว่านี้หน่อยได้ไหม
1 รายละเอียดงานนี้ทำเพื่ออะไร
2. ตาราง x Y เก็บข้อมูลเกี่ยวกับอะไรมีฟิลอะไรบ้าง มีคีย์หลักอะไร คีย์นอกอะไร






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-13 19:29:25 By : yutthanarak
 


 

No. 2

Guest


ตอบความคิดเห็นที่ : 1 เขียนโดย : yutthanarak เมื่อวันที่ 2014-05-13 19:29:25
รายละเอียดของการตอบ ::
ขอบคุณค่ะ แต่
แนน ไม่รู้ อะไรคือ คีย์หลัก อะไรคือ คีย์นอก เนี่ยสิ
รู้แค่ว่า คีย์หลัก ห้ามว่า ห้ามซ้ำ
อ่านในเว็บ พอเข้าใจอยู่นิดๆ ดดยไม่รู้ตั้งค่ายังไง

บางชุดข้อมูล จะมี

รายละเอียด คือ ค้นหาข้อมูลโปรเจค แล้ว ประวัติคนทำ
โดยการค้นหาจะเจอรายชื่อ โปรเจคที่เราค้นหา แล้ว คลิกชื่อเพื่อเข้าไปดูรายละเอียดโปรแกรม(เหมือนห้องสมุด)
แสดงข้อมูล โปรเจค ของรุ่นพี่ โดยข้อมูลจากตาราง X
(ตาราง X ) จะเก็บข้อมูล โปรเจค
ชื่อเจค
กรณีศึกษา
ชื่อคนทำ1
ชื่อคนทำ2
ชื่อคนทำ3
ห้อง
ปีการศึกษา
อ.ปรึกษาหลัก
อ.ปรึกษารอง
Keywork ตัวนี้ไม่แสดง แค่ใช้หาเฉยๆ

รายละเอียด ฟิลตาราง X
ฟิลตาราง X

ผลหลังจากคลิกชื่อ



หลังจาก แสดง ข้อมูลโปรเจคแล้ว (ตามรูป)
แนนต้องการจะ ทำประวัติคนทำ โดย Join ไปยัง ตาราง Y โดยใช้ ชื่อคนทำ เป็นตัว Join
ต้องการดูประวัติใครก็ คลิกชื่อคนนั้น

ตาราง Y จะเก็บข้อมูล ประวัติคนทำแต่ล่ะคน
ชื่อ(คนทำ)
ชื่อเจค
กรณีศึกษา
สาขาวิชา
ว ด ป เกิด
ที่อยู่
เบอร์โทร
ประวัติการเรียน
ตารางY

ที่แนนใช้ จากตาราง X คือ ตัวฟิล Programmer1, Programmer2 และ Programmer3
ปล. บาง โปรเจค มี 1 คน 2 คน หรือ 3 คน
เพราะงั้น แนนว่า Programmer1, Programmer2 และ Programmer3 ไม่ใช่ คีย์หลักแน่ๆ เพรา มันต้องมี ว่าง ที่ Programmer2 และ Programmer3

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-13 20:26:11 By : แนน
 

 

No. 3



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



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

ไม่ต้อง JOIN ครับ
คิวรี่ 3 ครั้ง (หรือจะคิวรี่ครั้งเดียวก็ได้) ในตารางรายชื่อผู้จัดทำไปเลย

การ JOIN จะใช้ตอนค้นหาซะส่วนใหญ่ คือจะค้นหาชื่อผู้จัดทำว่ามีเรคอร์ดไหนบ้าง

สำหรับการ JOIN แบบนี้จะใช้ OR ตอนที่ JOIN ครับ

Code (SQL)
SELECT field1, field2, field3, fieldN FROM tb_list
LEFT JOIN tb_person ON (
    tb_list.person1 = tb_person.id OR tb_list.person1 = tb_person.id OR tb_list.person1 = tb_person.id
)
WHERE tb_person.name = 'ผู้จัดทำ' 



ปล. ผลการค้นหาของรายการ 1 เรคอร์ด หากมีผู้จัดทำ 3 คนก็จะได้ผลลัพธ์ 3 แถว ดังนั้นจะต้อง GROUP by ไอดี ของรายการด้วย ซึ่งชื่อผู้จัดทำในผลการค้นหาจะใช้อ้างอิงไม่ได้ เพราะไม่รู้ว่ามาจากคนที่ 1 2 หรือ 3
ดังนั้นเมื่อนำไปแสดงในแบบฟอร์มก็ยังต้องคิวรี่ 3 ครั้งอยู่ดี (เพื่อนำชื่อแต่ละฟิลด์มาแสดง)


ประวัติการแก้ไข
2014-05-13 21:59:09
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-13 21:55:50 By : {Cyberman}
 


 

No. 4



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



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


prj1

ตารางน่าจะสร้างประมาณนี้ PM_ID เป็นคีย์หลักของตาราง programmer อาจเป็นชนิด int autoincrement
มีคีย์นอกที่เชื่อมไปอีกตารางคือ PJ_ID เป็นชนิด int ส่วน PM_PROGRAMMER_TYPE ไว้ใส
Programmer1 Programmer2 Programmer3

PJ_ID เป็นคีย์หลักตาราง project อาจเป็นชนิด int autoincrement



เวลาจะหาชื่อโปรเจ็ก
Code (SQL)
SELECT * FROM project WHERE PJ_TITLE LIKE $_POST[ตัวแปรชื่อโปรเจ็คที่Post มาจากหน้าก่อนหน้า]


จากการหาจะได้ PJ_ID เอาไปหา programmer ได้
หาหมดทุกคน
Code (SQL)
SELECT * FROM programmer WHERE PJ_ID=$result[PJ_ID]


หาprogrammer1 ก็
Code (SQL)
SELECT * FROM programmer WHERE PJ_ID=$result[PJ_ID] AND PM_PROGRAMMER_TYPE='Programmer1'


จะได้ PM_ID เอามาใส่ในลิ้ง
<A Href="profile.php?Programmer=$result[PM_ID]">

พอกดไปอีกหน้าก็ใช้
Code (SQL)
SELECT * FROM programmer WHERE PJ_ID='$_GET[Programmer]'

ก็จะได้รายละเอียดของโปรแกรมเมอร์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-13 22:39:55 By : yutthanarak
 


 

No. 5

Guest


ตอบความคิดเห็นที่ : 3 เขียนโดย : {Cyberman} เมื่อวันที่ 2014-05-13 21:55:50
รายละเอียดของการตอบ ::
ขอบคุณค่ะ แนนจะลองดูนะคะ
ขอบคุณจริงๆ ที่อุส่า สละเวลามาบอก

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-14 20:47:21 By : แนน
 


 

No. 6

Guest


ตอบความคิดเห็นที่ : 4 เขียนโดย : yutthanarak เมื่อวันที่ 2014-05-13 22:39:55
รายละเอียดของการตอบ ::
ขอบคุณค่ะ
ส่วน PM_PROGRAMMER_TYPE ใน
Programmer1 Programmer2 Programmer3 พร้อมกันเลย
หรือว่า ตามลำดับที่เรา ใส่ใน ตาราง Project คะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-05-16 19:00:44 By : แนน
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : [PHP, My sql] จะ Join ตาราง X 3 ฟิล ไป ตาราง Y 1 ฟิลยังไง (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 04
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 อัตราราคา คลิกที่นี่