如何在两个表中查询可能的值

时间:2019-01-16 04:14:59

标签: sql ms-access

我正在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>

样品数据如下

sample_data

阿拉伯语表格示例数据

英语表样本数据 更新表格数据 enter image description here

enter image description here

enter image description here

id1匹配后的新输出 enter image description here

2 个答案:

答案 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)