SQL Join 2ตาราง โดย2ตารางนี้ มีฟิลด์เหมือนกัน จะทำยังไงกับการค้นหาใน datatable ค่ะ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา SQL Join 2ตาราง โดย2ตารางนี้ มีฟิลด์เหมือนกัน จะทำยังไงกับการค้นหาใน datatable ค่ะ
SQL Join 2ตาราง โดย2ตารางนี้ มีฟิลด์เหมือนกัน จะทำยังไงกับการค้นหาใน datatable ค่ะ
Copy
ต้องการโชว์ข้อมูล 2 ตาราง ซึ่งมีฟิลด์เหมือนกัน เลือกโชว์ทุกข้อมูลโดยการใช้ UNION
ตาราง sale จะเป็นข้อมูลใบเสนอราคา
ตาราง cc_edit_saleจะเป็นข้อมูลใบเสนอราคาที่แก้ Sacode จะเป็นตัวเลขลงท้ายด้วย Rev เช่น CC57/25Rev1, CC57/25Rev2
จึงจำเป็นต้องโชว์ข้อมูลทั้ง2ตาราง


แล้วหากต้องการ Where Sacode like '%CC57%' คือค่ามาทั้งหมดเลยค่ะ ไม่ใช่เฉพาะที่ต้องการหา

ลองทดสอบแล้วว่าเกี่ยวกับการ UNION หรือไม่ปรากฏว่าใช่ค่ะ
ถ้าลองค้นหาแบบตารางเดียว สามารถค้นหาได้ค่ะ
จะต้องทำยังไงคะ เกี่ยวกับการjoin ตารางทั้ง2นี้
code จริงค่ะ
หน้า show
หน้า preCC-grid-data.php
ตาราง sale จะเป็นข้อมูลใบเสนอราคา
ตาราง cc_edit_saleจะเป็นข้อมูลใบเสนอราคาที่แก้ Sacode จะเป็นตัวเลขลงท้ายด้วย Rev เช่น CC57/25Rev1, CC57/25Rev2
จึงจำเป็นต้องโชว์ข้อมูลทั้ง2ตาราง


แล้วหากต้องการ Where Sacode like '%CC57%' คือค่ามาทั้งหมดเลยค่ะ ไม่ใช่เฉพาะที่ต้องการหา

ลองทดสอบแล้วว่าเกี่ยวกับการ UNION หรือไม่ปรากฏว่าใช่ค่ะ
ถ้าลองค้นหาแบบตารางเดียว สามารถค้นหาได้ค่ะ
จะต้องทำยังไงคะ เกี่ยวกับการjoin ตารางทั้ง2นี้
code จริงค่ะ
หน้า show
<script type="text/javascript" language="javascript" >
$(document).ready(function() {
var dataTable = $('#employee-grid').DataTable( {
"processing": true,
"serverSide": true,
"Paginate": true,
"LengthChange": false,
"Filter": false,
"Info": false,
"order": [[ 2, "desc" ]], //เรียง
"ajax":{
url :"preCC-grid-data.php", // json datasource
type: "post", // method , by default get
error: function(){ // error handling
$(".employee-grid-error").html("");
$("#employee-grid").append('<tbody class="employee-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>');
$("#employee-grid_processing").css("display","none");
}
},
"fnDrawCallback": function () {
//alert('test');
$(".example1").fancybox({
'maxWidth' : 800,
'maxHeight' : 600,
'fitToView' : false,
'width' : '100%',
'height' : '100%',
'autoSize' : false,
'closeClick' : false,
'openEffect' : 'none',
'closeEffect' : 'none',
'type' : 'iframe'
});
}
} );
} );
</script>
<div id="dt_example">
<div id="demo">
<table id="employee-grid" cellpadding="0" cellspacing="0" border="0" class="display" width="100%">
<thead>
<tr>
<th width="10%">ตอบรับ PO</th>
<th width="10%">วันที่ทำใบเสนอราคา</th>
<th width="20%">เลขที่ใบเสนอราคา</th>
<th width="30%">บริษัทลูกค้า</th>
<th width="15%">Contact By</th>
<th width="15%">แก้ไข </th>
</tr>
</thead>
</table>
<!-------------------------------------------------------------------------------------->
</div>
หน้า preCC-grid-data.php
<?php if (!isset($_SESSION)) {
@session_start();
}
?>
<?php include('../Connections/conndb.php');
$strSQL = "SELECT * FROM employee WHERE Eusername = '".$_SESSION['Eusername']."' AND Edepart = '".$_SESSION['Edepart']."' ";
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
$employee = $objResult['Eid'];
/* Database connection start */
$servername = "localhost";
$username = "root";
$password = "4321";
$dbname = "salecentral";
$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());
mysqli_set_charset($conn,"utf8");
/* Database connection end */
// storing request (ie, get/post) global array to a variable
$requestData= $_REQUEST;
$columns = array(
// datatable column index => database column name
0 =>'checkPO',
1 =>'Sadate',
2 =>'Sacode',
3 =>'name_partner',
4 => 'contactby'
);
// getting total number records without any search
$sql = "SELECT checkPO,Sadate, Sacode, name_partner, contactby, nickname";
$sql.=" FROM sale,employee,partner,contact where sale.id_contact=contact.id_contact AND sale.Eid=employee.Eid AND sale.id_partner=partner.id_partner";
$sql.=" UNION ALL SELECT checkPO,Sadate, Sacode, name_partner, contactby, nickname";
$sql.=" FROM cc_edit_sale,employee,partner,contact where cc_edit_sale.id_contact=contact.id_contact AND cc_edit_sale.Eid=employee.Eid AND cc_edit_sale.id_partner=partner.id_partner";
$query=mysqli_query($conn, $sql) or die("preCC-grid-data.php: get error");
$totalData = mysqli_num_rows($query);
$totalFiltered = $totalData; // when there is no search parameter then total number rows = total number filtered rows.
$sql = "SELECT checkPO,Sadate, Sacode, name_partner, contactby, nickname";
$sql.=" FROM sale,employee,partner,contact where sale.id_contact=contact.id_contact AND sale.Eid=employee.Eid AND sale.id_partner=partner.id_partner";
$sql.=" UNION ALL SELECT checkPO,Sadate, Sacode, name_partner, contactby, nickname";
$sql.=" FROM cc_edit_sale,employee,partner,contact where cc_edit_sale.id_contact=contact.id_contact AND cc_edit_sale.Eid=employee.Eid AND cc_edit_sale.id_partner=partner.id_partner AND 1=1";
if( !empty($requestData['search']['value']) ) { // if there is a search parameter, $requestData['search']['value'] contains search parameter
$sql.=" AND ( checkPO LIKE '%".$requestData['search']['value']."%' ";
$sql.=" OR Sadate LIKE '%".$requestData['search']['value']."%' ";
$sql.=" OR Sacode LIKE '%".$requestData['search']['value']."%' ";
$sql.=" OR name_partner LIKE '%".$requestData['search']['value']."%' ";
$sql.=" OR contactby LIKE '%".$requestData['search']['value']."%' )";
}
$query=mysqli_query($conn, $sql) or die("preCC-grid-data.php: get error");
$totalFiltered = mysqli_num_rows($query); // when there is a search parameter then we have to modify total number filtered rows as per search result.
$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." ";
/* $requestData['order'][0]['column'] contains colmun index, $requestData['order'][0]['dir'] contains order such as asc/desc */
$query=mysqli_query($conn, $sql) or die("preCC-grid-data.php: get error");
$data = array();
while( $row=mysqli_fetch_array($query) ) { // preparing an array
//$idPO= $row["idPO"];
$nestedData=array();
if ($_SESSION['Eusername']== "cw03" || ($_SESSION['Eusername']== "cc62") || ($_SESSION['Eusername']== "cc44") ||$_SESSION['Edepart']== "reader")
{
if( strpos( $row["Sacode"], "Rev" )) {
if ($row['checkPO']=='1') {
$nestedData[] = "<a href='checkPO_CC_edit.php?idx=$row[Sacode]'><img src='../images/icon_correct.gif'/></a>";
}
else {
$nestedData[] = "<a href='checkPO_CC_edit.php?idx=$row[Sacode]'><img src='../images/icon_wrong.gif'/></a>";
}
}
else {
if ($row['checkPO']=='1') {
$nestedData[] = "<a href='checkPO_CC.php?idx=$row[Sacode]'><img src='../images/icon_correct.gif'/></a>";
}
else {
$nestedData[] = "<a href='checkPO_CC.php?idx=$row[Sacode]'><img src='../images/icon_wrong.gif'/></a>";
}
}
}
else {
if ($row['checkPO']=='1'){ $nestedData[] = "<img src='../images/icon_correct.gif'/>";} else { $nestedData[] = "<img src='../images/icon_wrong.gif'/>";}
}
/*if($row['checkPO']=='1') { $nestedData[] = "<a href='checkPO_CC_edit.php?idx=$row[Sacode]'><img src='../images/icon_correct.gif'/></a>";}
if($row['checkPO']=='0') { $nestedData[] = "<img src='../images/icon_wrong.gif'/>";} */
list($Year,$month,$day) = explode("-",$row['Sadate']);
$nestedData[] = (int)$day."/".(int)$month."/".($Year);
$nestedData[] = $row["Sacode"];
$nestedData[] = $row["name_partner"];
$nestedData[] = $row["contactby"]."(".$row["nickname"].")";
$nestedData[] = "<a href='editQuotationCC-before.php?idx=$row[Sacode]' target='_self'><img src='../images/edit.png' width='30' title='แก้ไข' border='0' ></a><a class='example1' href='viewCC.php?idx=$row[Sacode]'><img src='../images/search.png' width='30' title='ดูใบเสนอราคา' border='0' ></a><a href='printCC.php?idx=$row[Sacode]'><img src='../images/print.png' width='30' title='พิมพ์ใบเสนอราคา' border='0' onClick='return Conf(this)' ></a>";
$data[] = $nestedData;
}
$json_data = array(
"draw" => intval( $requestData['draw'] ), // for every request/draw by clientside , they send a number as a parameter, when they recieve a response/data they first check the draw number, so we are sending same number in draw.
"recordsTotal" => intval( $totalData ), // total number of records
"recordsFiltered" => intval( $totalFiltered ), // total number of records after searching, if there is no searching then totalFiltered = totalData
"data" => $data // total data array
);
echo json_encode($json_data); // send data as json format
?>
คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา
โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ