我正在ms ms访问中建立一个新查询,以查询两个表中的唯一值。这两个表都有一个唯一的字段,即id。
当前使用联接查询,但查询显示的记录以百万为单位,但我的要求是仅提取两个表中的所有记录。
var qtd = dataRow[3]; //[3] because the select options is the next column
var qtd_num = document.getElementById(qtd).selectedOptions[0].value;
;
我希望结果应如下所示,即如果英文ID没有值,那么它将显示为空白值。
<script type="text/javascript">
var numbers= [1, 2 , 3, 4];
$(document).ready(function() {
var table= $('#example').DataTable( {
"processing": true,
"serverSide": true,
ajax: {
url: 'server.php',
type: 'POST',
},
columnDefs: [
{ targets: -1,
render: function (data, type, row, meta) {
return '<button type="submit" class="add_btn btn btn-success btn-md active" data-id="' + meta.row + '" id=" ' + meta.row + ' " value="add"> <span class="glyphicon glyphicon-plus"></span> </button>';
}
},
{
targets: -2,
render: function (data, type, row, meta){
var $select = $('<select data-id="' + meta.row + '" id="' + meta.row + ' " ></select>', {
});
$.each(numbers, function (k, v, row, meta) {
var $option = $("<option></option>", {
"text": v,
"value": v
});
if (data === v) {
$option.attr("selected", "selected")
}
$select.append($option);
});
return $select.prop("outerHTML");
}
} ],
})
} ); // end ready
</script>
样品数据如下
阿拉伯语表格示例数据
答案 0 :(得分:3)
您需要使用左联接而不是内部联接
SELECT aa.eng, aa.id, bb.arb, bb.url, bb.id
FROM Arabic AS aa left JOIN English AS bb ON (aa.id = bb.id)
答案 1 :(得分:0)
由于您的id
字段不是唯一的,而是每行包含相同的值,因此结果将是两个表的笛卡尔积,即阿拉伯表,将返回英语表中具有匹配的id
值的所有行,并且返回的总行数等于每个表中的行数的乘积。
仅选择select distinct
字段时使用group by
或添加id
子句将删除所有重复的id
组合,这对于您的样本数据将仅产生一条记录:
select distinct aa.id, bb.id
from Arabic as aa left join English as bb on (aa.id = bb.id)
select aa.id, bb.id
from Arabic as aa left join English as bb on (aa.id = bb.id)
group by aa.id, bb.id
结果:
aa.id bb.id
581026 581026
使用引用每个项目的唯一ID(id1
),您可以在LEFT JOIN
字段上简单地使用id1
,例如:
select aa.eng, aa.id, bb.arb, bb.url, bb.id
from Arabic aa left join English bb on (aa.id1 = bb.id1)