แสดงข้ออมูลเอาเฉพาะทีไม่ซ้ำกันจาก 2 server ต้องเขียนคำสั่ง php และ sql ยังไงครับ
กรณีถ้า Database อยู่ server เดียวกัน สามารถเขียน join กันได้เลย
และ user ต้องมี trustee ทั้งสอง database
from database1.table1 as A , database2.tablex as B
แต่ถ้าอยู่คนล่ะ server ก็ต้องคิวรี่ ตาม คห 1 เอา array มา เปรียบเทียบ และจะทำอะไรก็ว่ากันไป
Date :
2021-04-01 11:27:38
By :
Chaidhanan
ตัวอย่างการใช้ mysqli, pdo ก็มีอยู่ในเว็บนี้ ได้ลองค้นหาหรือยัง?
ตัวอย่าง array_unique ก็ใส่ไปในลิ้งค์แล้ว ได้เปิดหรือยัง?
หรือยังไม่ได้ดูอะไรเลย?
Code (PHP)
$idsArray = [];
foreach ($result as $row) {
$idsArray[] = $row->id;
}
// ใช้ array_unique กับ $idsArray;
ประวัติการแก้ไข 2021-04-02 10:34:35
Date :
2021-04-02 10:31:08
By :
mr.v
การเชื่อมต่อ db มันทำได้สารพัดแบบ ถ้าแบบโบราณรุ่นพระเจ้าเหา ก็ใช้ mysql_xxx function ซึ่งเขาประกาศเลิกใช้ไปแล้วล่ะ แต่มีมนุษย์บางพวกยังใช้อยู่, แบบปัจจุบันก็ใช้ได้ทั้ง mysqli, PDO.
คุณเอาแต่ถามขอๆๆๆ แต่ไม่ได้ให้อะไรมาเลย ถ้าผมเอา PDO ให้แล้วมันจะ......ยังไง จะใช้ได้มั้ย จะไปเริ่มตรงไหนก็ยังไม่รู้เลย
ถ้าผมเขียนตัวอย่างตัดตอนมาแค่ query แล้วเอามาวน loop งี้ ระหว่าง mysqli กับ PDO มันก็ไปคนละเรื่องแล้ว.
หรือถ้าผมเขียนตัวอย่างมา ใช้ตัวแปรหนึ่ง แต่คุณไปใช้อีกอย่างหนึ่ง แล้วก็จะมาบอกว่าใช้ไม่ได้อีก ซึ่งผมเดาเลยว่าคงจะออกหวยเบอร์นี้แน่ๆเพราะเจอมาเยอะแล้ว คือไม่เข้าใจหลักการเลย ขนาดให้ตัวอย่างขนาดนี้ยังขอตัวอย่างแสดงว่าไม่เข้าใจหลักการเลยจริงๆ
ถ้าอย่างนั้นมันก็ไปยากเพราะไม่รู้จะเขียนตัวอย่างยังไงให้ copy & paste แล้วใช้งานได้เลย
จริงๆคงไม่ใช่ขอตัวอย่างเพราะตัวอย่างมันชัดเจนหมดแล้วนะ มันไม่มีอะไรมากกว่านี้อีกแล้ว หลักการทำงานก็มีแค่นี้ตามที่อธิบายไป
น่าจะเรียกว่าขอโค้ดที่ ก๊อป วาง แล้วทำงานได้เลยแบบนั้นมากกว่า
ถ้าจะเอาอย่างนั้นก็ต้องเอาโค้ดที่มีมาแปะด้วย ไม่ใช่ขอลอยๆ
แล้วจากนั้นก็รอคนมาเขียนให้ครับ
Date :
2021-04-04 11:01:38
By :
mr.v
ยกตัวอย่างนะ อยากได้ตัวอย่างก็จะเอาให้ ลองดู รับรองว่าต้องบอกว่าทำไม่ได้ใช้ไม่ได้อีก
Code (PHP)
$idsArray = [];
// server 1
$sql = 'SELECT * FROM table';
$Sth = $PDO1->prepare($sql);
$Sth->execute();
$result = $Sth->fetchAll();
$Sth->closeCursor();
foreach ($result as $row) {
$idsArray[] = $row->id;
}
unset($result, $Sth, $row);
// server 2
$sql = 'SELECT * FROM table';
$Sth = $PDO2->prepare($sql);
$Sth->execute();
$result = $Sth->fetchAll();
$Sth->closeCursor();
foreach ($result as $row) {
$idsArray[] = $row->id;
}
unset($result, $Sth, $row);
// เอาไอดีซ้ำออกไป
$idsArray = array_unique($idsArray);
// เอา $idsArray ไปใช้
ถ้าทำได้ก็ยินดีด้วย ถ้ายังไม่ได้ก็อย่างที่บอก เอาโค้ดมาแปะ อย่าถามอย่าขอลอยๆ
ประวัติการแก้ไข 2021-04-04 11:19:10
Date :
2021-04-04 11:07:17
By :
mr.v
คือถ้าคุณไม่เป็นเลย
แล้วคุณทำตามที่ผมแนะบ้าง คห.4 ผมบอกให้ไปดูตัวอย่างการใช้ mysqli, PDO ในเว็บนี้
ถ้าคุณทำ คุณก็ได้ความรู้วิธีการเขียนเชื่อมต่อ DB ไปแล้ว ทำได้ระดับหนึ่งแล้ว
ต่อมาการลบข้อมูลซ้ำ ผมก็ให้ทั้งลิ้งค์ในคห.1 และตัวอย่างคร่าวๆคห.4 บวกทั้งตัวอย่างจริงๆคห. 11
ถ้าคุณศึกษาการเขียนเชื่อมต่อ DB ได้ในขั้นก่อนนี้ ตรงนี้มันก็ไม่ยากเลย มองปุ๊บเข้าใจปั๊บ แทบจะลอกวางแล้วใช้ได้เลยด้วยซ้ำ
แต่คุณก็ยังจะมา....ผมก็ไม่รู้จะว่ายังไงดีนะ กลายเป็นผมผิดหมดเลยซะงั้น
Date :
2021-04-04 11:44:13
By :
mr.v
มนุษย์แบบคุณนี่ก็มี เกิดมาไม่ค่อยได้พบได้เห็น
Date :
2021-04-04 11:59:50
By :
mr.v
บอกว่าตัวเองความรู้ php เริ่มจาก 0
ถ้า 0 จริงก็ไปเริ่มศึกษาการเชื่อมต่อ DB นี่ก็แนะนำ ไม่ใช่ไม่บอก
พอบอกให้เอาโค้ดมา ก็บอกว่าไม่รู้เอาโค้ดอะไรมาแปะ
เมื่อไม่รู้เอาโค้ดอะไรมาแปะ ก็แสดงว่าเขียนเชื่อมต่อก็ยังไม่ได้ แต่ให้ไปศึกษาการเชื่อมการใช้ DB ก็...ดูเหมือนจะไม่เอาอีก
อยากได้การเอา id ซ้ำออก ก็มีทั้งตัวอย่างคร่าวตัวอย่างจริง
ก็ยังไม่พอใจ ยังจะว่าไม่ได้ๆแต่ไม่อัพเดทอะไรเลยไม่ได้ยังไง ทำอะไรไปแล้ว
บอกว่าหาข้อมูลกูเกิ้ลแล้ว และทั้งๆที่ให้ตัวอย่างไปหมด ก็ยังบอกแต่ไม่ได้ มีแต่จะเอาๆ
ให้ข้อมูลและหนทางทุกอย่างแต่ยังหาว่าผมคับแคบบ้าง อะไรต่ออะไร ฯลฯ
อือ เจริญโคตรๆล่ะ
Date :
2021-04-04 12:11:21
By :
mr.v
ตอบความคิดเห็นที่ : 26 เขียนโดย : mr.v เมื่อวันที่ 2021-04-04 12:11:21
รายละเอียดของการตอบ ::
... ตัวอย่างโค้ดที่พี่ให้มา ผมก้อทำได้แค่นี้แหละครับ เพราะผมก้อไปต่อไม่ถูก พี่เห็นก้อคงจะเข้าใจได้แล้วนะครับ ว่าคนที่ไม่เข้าใจ ทำไม่ได้ มันก้อคือทำไม่ได้ ทำไม่ถูก จึงต้องหาโค้ดเป็นแนวทาง หวังว่าพี่คงจะเข้าใจนะครับ แม้กระทั่งบรรทัดแรกตรง $idsArray = []; ผมยังไม่รุ้เลยว่าต้องใส่อะไร
<?php
$idsArray = [hn];
// server 1
$sql = "select p.id
from clinicmember cm
left outer join patient p on p.hn=cm.hn
where cm.clinic = '053'
and cm.clinic_member_status_id = '1'";
$Sth = $PDO1->prepare($sql);
$Sth->execute($condbhos, $sql);
$result = $Sth->fetchAll();
$Sth->closeCursor();
foreach ($result as $row) {
$idsArray[] = $row->id;
}
unset($result, $Sth, $row);
// server 2
$sql = 'SELECT id FROM palliative';
$Sth = $PDO2->prepare($sql);
$Sth->execute($condb, $sql);
$result = $Sth->fetchAll();
$Sth->closeCursor();
foreach ($result as $row) {
$idsArray[] = $row->id;
}
unset($result, $Sth, $row);
// เอาไอดีซ้ำออกไป
$idsArray = array_unique($idsArray);
// เอา $idsArray ไปใช้
?>
ประวัติการแก้ไข 2021-04-04 13:51:56 2021-04-04 13:56:15
Date :
2021-04-04 13:43:35
By :
ipiammax
จริงด้วย เจอปัญหาเดียวกันไม่รู้จะแสดงข้อมลที่ไม่เหมือนกันยังจากข้อมูล server 2 เครื่อง เจอคุณ mr.v ตอบคำถาม ไม่กล้าถามเช่นเดียวกันคะ เพราะเราก็ไม่รุ้เหมือนกันกับคนที่โพสถาม ขอโทษด้วยนะคะ จากคนที่ไม่รู้เหมือนกันค่ะ เจอแบบนี้ไม่กล้าถามเลยค่ะ
Date :
2021-04-04 14:44:18
By :
konbanban
ดูจากโค๊ดที่คุณเขียนมาลงไว้ เดาได้ว่าคุณไม่ใช่สาย โปรแกรมเมอร์ เป็นแค่ it
และรู้แค่อุปกรณ์นั้นๆ ทำงานอะไรเท่านั้น ไม่ได้มีความรู้ขนาดที่จะ coding อุปกรณ์เหล่านั้น
ก็ขอแนะนะให้เริ่มจาก อ่าน document getting start ครับ
ทดลองทำตามตัวอย่าง ไปที่ละ บทความ ทำความเข้าใจกับคำสั่ง การแสดงผล
input output ให้เข้าใจท่องแท้
อย่าคิดประยุกต์สร้างงานเอง โดยที่ไม่มีความรู้พื้นฐาน
อย่างคิดว่าได้โค๊ดตัวอย่างไปแล้วจะเข้าใจ คิดว่าตัวเองเป็น อัจฉริยะที่สามารถเข้าใจโค๊ดที่คนอื่นเขียนได้ โดยที่ไม่มีพื้นฐานความรู้ของภาษานั้นๆ
ลิงค์ข้างล่างเป็น ตัวอย่างล้วนๆ หลากหลาย ถ้ามีความสามาถรอ่านโค๊ดได้ โดยไม่มีพื้นฐานก็ลองดูนะครับ
https://www.thaicreate.com/php.html
Date :
2021-04-04 15:40:01
By :
Chaidhanan
Code (PHP)
$idsArray = [];
คำสั่งนี้คือการประกาศว่าตัวแปรนี้เป็น array
ใช้ใน php 5.4+ (หรือใหม่กว่า) ถ้าเก่ากว่าก็ใช้ array() แทนตัว []
คุณไม่ต้องใส่อะไร เพราะมันคือการประกาศว่าตัวมันเป็น array
ส่วนการใส่ อยู่ใน loop ที่ใช้คำสั่งว่า foreach อยู่แล้ว
Date :
2021-04-04 15:47:55
By :
mr.v
แนะนำเพิ่มเติมว่าให้แจ้งบริษัทไปว่างานโปรแกรมเมอร์ไม่เหมือนงาน IT
ต้องการการฝึกเพิ่มเติมอีกมาก ไม่สามารถทำข้ามสายงานได้เลย
เหมือนคนรู้ภาษาไทยจู่ๆจะไปพูดอังกฤษโดยไม่เคยเรียนรู้แบบใดๆเลย มันทำไม่ได้
ให้ไปของบเพื่อไปเข้าคอร์สอบรมเพิ่มเติม หรือ ไม่ก็ต้องจ้างโปรแกรมเมอร์โดยตรงมาทำ
เพราะถ้าไม่ให้งบเข้าคอร์สเรียนเพิ่มเติม หรือไม่จ้างคน การฝึกเอาเองจะต้องใช้เวลามากและต้องเริ่มจากพวก getting start จะข้ามขั้นมันไปไม่รอด สุดท้ายก็ต้องกลับไปเรียนจุดเริ่มต้นอยู่ดี เสียเวลาลองเปล่าๆ
Date :
2021-04-04 15:52:44
By :
mr.v
ตอบความคิดเห็นที่ : 36 เขียนโดย : mr.v เมื่อวันที่ 2021-04-04 15:47:55
รายละเอียดของการตอบ ::
ดิฉันก็ทำได้เท่ากับคนที่โพสถาม จากนั้นก็ไปต่อไม่ถูกแล้วค่ะ ได้แค่นี้เหมือนกัน โปรแกรมฟ้อง error ตั้งแต่ บัรรทัดแรกแล้วค่ะ ตรง $idsArray = [];
รบกวนช่วยชี้ทางให้หน่อยนะคะ ขอบคุณมากค่ะ
<?php
$idsArray = [];
// server 1
$sql = "select id
from customer cm ";
$Sth = $PDO1->prepare($sql);
$Sth->execute($condb1, $sql);
$result = $Sth->fetchAll();
$Sth->closeCursor();
foreach ($result as $row) {
$idsArray[] = $row->id;
}
unset($result, $Sth, $row);
// server 2
$sql = 'SELECT cus_id FROM product_cell';
$Sth = $PDO2->prepare($sql);
$Sth->execute($condb2, $sql);
$result = $Sth->fetchAll();
$Sth->closeCursor();
foreach ($result as $row) {
$idsArray[] = $row->id;
}
unset($result, $Sth, $row);
// เอาไอดีซ้ำออกไป
$idsArray = array_unique($idsArray);
// เอา $idsArray ไปใช้
?>
Date :
2021-04-04 16:08:53
By :
konbanban
ตอบความคิดเห็นที่ : 35 เขียนโดย : Chaidhanan เมื่อวันที่ 2021-04-04 15:44:04
รายละเอียดของการตอบ ::
ผมได้แค่นี้ครับ ไปต่อไม่ได้แล้วครับ มัน error ตั้งแต่ตรง $idsArray = []; แล้วครับ
<?php
$idsArray = [];
// server 1
$sql = "select p.hn
from clinicmember cm
left outer join patient p on p.hn=cm.hn
where cm.clinic = '053'
and cm.clinic_member_status_id = '1'";
$Sth = $PDO1->prepare($sql);
$Sth->execute($condbhos, $sql);
$result = $Sth->fetchAll();
$Sth->closeCursor();
foreach ($result as $row) {
$idsArray[] = $row->id;
}
unset($result, $Sth, $row);
// server 2
$sql = 'SELECT hn FROM palliative1000_person';
$Sth = $PDO2->prepare($sql);
$Sth->execute($condbs, $sql);
$result = $Sth->fetchAll();
$Sth->closeCursor();
foreach ($result as $row) {
$idsArray[] = $row->id;
}
unset($result, $Sth, $row);
// เอาไอดีซ้ำออกไป
$idsArray = array_unique($idsArray);
// เอา $idsArray ไปใช้
?>
Date :
2021-04-04 16:12:20
By :
ipiammax
mr.V อธิบายที่ความเห็น 36 แล้วครับ
เช็ค php version ด้วย
ใช้คำสั่ง phpinfo(); เพื่อเช็คดู ค่ามต่างๆ
คำค้น
phpinfo();
เพื่อดูวิธีใช้งาน
Date :
2021-04-04 16:15:23
By :
Chaidhanan
ทำ linkServer
Server Objects-->Linked Servers
จากนั้น
Code (SQL)
create table #t1
(
id int
)
insert into #t1 values(1),(2),(3)
create table #t2
(
id int
)
insert into #t2 values(1),(4),(5)
select *from #t1
select *from #t2
----Show Data ไม่ซ้ำ
select *from #t1
except
select *from #t2
union
(
select *from #t2
except
select *from #t1
)
Date :
2021-04-23 13:20:34
By :
WWWWIN
แอบมาเสพมาม่า
ทุกอย่างของงานโปรแกรมเมอร์ มันต้องลอง
- ลองโค้ดเอง
- ลองหาว่ามันเออเร่ออะไรเอง
- ลองเซิร์ทใน google เอง
- ลองแก้ปัญหาตามเอง
- ไม่ได้ก็มาถามตัวเอง
- นอนเอง
- ตื่นมาอ่านอีกรอบ ทำอีกรอบ ไม่ได้แบบนี้ลองผิดลองถูกกว่าจะเข้าไปใจเองว่าเออ นี่นะ มันก็ไม่ได้มากไรนี่หว่า
- วนลูปความคิดตัวเองใหม่ ว่าการเขียนโปรแกรมมันไม่ใช่แค่พิมพ์ตัวอักษร แล้วสั่งให้รัน มันต้องคิดลอจิกแก้ปัญหาไปด้วย มันสนุกตรงได้แก้ปัญหาไปด้วยนี่หละครับ
คุณวี ก็ช่วยแก้ปัญหาไปได้เยอะนะครับ อ่านดี ๆ
เราขอความช่วยเหลือ เขามีเวลามาตอบให้เรา ถือว่าโชคดีมากเลยนะครับ ที่มีคนมาช่วยตอบเรา
เราก็ต้องพยายามให้มากขึ้นนะครับ
เอาใจช่วยกันทุกคนครับ
Date :
2021-04-30 02:00:14
By :
deawx
Load balance : Server 01