Я использую CodeIgniter, у меня проблема с запросом MySQL.
У меня есть две таблицы, которая является членом и отношением.
Таблица участников
Что я делаю, так это добавляю всех пользователей в таблицу участников в соответствии с member_type
. Если member_type равен 1, то это первичный член, если 2, то вторичный член
Таблица отношений
В таблице отношений я определяю отношение пользователя. Например, primary_member_id
равен 1, тогда как второстепенные члены равны 3 и 6, а сведения о вторичных членах доступны в таблице элементов.
Теперь мне нужен запрос для отображения всех первичных элементов в списке, связанных с их именами вторичных элементов и другими деталями.
Я использую таблицу данных с дочерней строкой. чтобы я мог отобразить основное имя в списке и щелкнуть знак плюс, чтобы отобразить дополнительный элемент.
Я попробовал ниже присоединиться код.
SELECT * FROM `member` LEFT JOIN relation on member.id=relation.primary_member_id WHERE member.member_type=1
ниже - результат вышеприведенного запроса. В этом я получаю имя основного члена дважды и как отобразить имя дополнительного члена
мне нужен вывод
таблица данных
function format ( d ) {
return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">'+
'<tr>'+
'<td>Full name:</td>'+
'<td>'+d.name+'</td>'+
'</tr>'+
'<tr>'+
'<td>Mobile number:</td>'+
'<td>'+d.phone+'</td>'+
'</tr>'+
'<tr>'
'</table>';
}
$(document).ready(function() {
var oTable =$('#all_list').DataTable( {
"processing": true,
// "serverSide": true,
"pageLength": 10,
"ajax": {
"url": baseUrl+ "/index.php/Search/Listdetails_ajax",
"type": "POST"
},
"columns": [
{
"className": 'details-control',
"orderable": false,
"data": null,
"defaultContent": ''
},
{ "data": "profile_pic","className":"img_list_pic",
"render": function (data, type, full, meta) {
return '<img src='+baseUrl+'/uploads/images/'+data+' class="search_pic">';
}
},
{ "data": "name" },
{ "data": "phone" }
],
"order": [[1, 'asc']],
} );
$('#all_list tbody').on('click', 'td.details-control', function () {
var tr = $(this).closest('tr');
var row = oTable.row( tr );
if ( row.child.isShown() ) {
// This row is already open - close it
row.child.hide();
tr.removeClass('shown');
}
else {
// Open this row
row.child( format(row.data()) ).show();
tr.addClass('shown');
}
} );
} );
Аякс
public function Listdetails_ajax(){
$draw = intval($this->input->get("draw"));
$start = intval($this->input->get("start"));
$length = intval($this->input->get("length"));
$books = $this->Search_model->getTotalList_of_primary();
$books_of_secondary = $this->Search_model->getTotalList_of_secondary();
$data['draw'] = 1;
$data['recordsTotal'] = count($books);
$data['recordsFiltered'] = count($books);
foreach ($books as $key => $row)
{
$arr_result = array(
"profile_pic" => $row->profile_pic,
"name" => $row->first_name.' ' .$row->last_name,
"phone" => $row->phone
);
$data['data'][] = $arr_result;
}
//print_r($arr_result);
echo json_encode($data);
exit;
}
/ модель /
public function getTotalList_of_primary(){
$this->db->select('*');
$this->db->from('member');
$this->db->where('member_type',1);
$query = $this->db->get();
$res = $query->result();
return $res;
}
public function getTotalList_of_secondary(){
/*what query I have to use here*/
}