我是SQL查询的新手,但如果我用我已经使用多年的编程语言编写它,它将看起来像这样:
fnCallback({
'draw': parseInt(draw),
'recordsTotal': response.hits.total,
'recordsFiltered': response.hits.total,
'data': dataSet,
'yadcf_data_2': [{
value: "Trident",
label: "Trident Eng'"
}, {
value: "Tasman",
label: "Tasman Eng'"
}]
});
最终结果应如下所示:
var table = $('#datatable').DataTable({
"serverSide": true,
"processing": true,
"bStateSave": true,
"responsive": true,
"deferRender": true,
"scrollX": true,
"sDom": 'lrtip',
"lengthMenu": [
[10, 25, 50, 100],
[10, 25, 50, 100]
],
"pageLength": 10,
"order": [
[1, "asc"]
],
"columns": [...],
'fnServerData': $.fn.dataTable.elastic_datatables({
index: index,
type: type,
client: client
})
});
yadcf.init(table, [{
column_number: 0,
filter_type: "range_date",
datepicker_type: 'bootstrap-datetimepicker',
filter_plugin_options: datetimepickerOptions
}, {
column_number: 1,
filter_type: "text",
text_data_delimiter: ","
}, {
column_number: 2,
filter_default_label: "Select Filter"
}, {
column_number: 3,
filter_type: "text",
text_data_delimiter: ","
}]);
有人可以帮我吗?
答案 0 :(得分:1)
SELECT patfile.Chart_Number
, CASE WHEN patfile.employer = ''
THEN (
SELECT addfile.NAME AS e_name
FROM addfile
WHERE patfile.employer = addfile.code
)
ELSE patfile.employer END AS e_name
FROM patfile
答案 1 :(得分:1)
主要是LEFT JOIN
到附加表。
如果第一个名称为空(或空白,取决于您的数据),则必须选择第二个名称。我不知道Advantage数据库,但不同的SQL方言以不同的方式支持这一点。
如果缺失值为null,而不是空白,则MySQL和SQLServer具有IFNULL
。您的SQL看起来像这样(未经测试):
SELECT patfile.Chart_Number, IFNULL(patfile.employer, addfile.name) AS e_name
FROM patfile
LEFT JOIN addfile ON patfile.employer = addfile.code
Oracle NVL
的工作方式相同,但它仅限Oracle。最好使用COALESCE
,它是ANSI标准的一部分,并得到更多数据库的支持。
某些数据库具有IF功能。这也可能是ANSI标准,我不确定。您可以使用它来测试非NULL的值,例如''。
SELECT patfile.Chart_Number, IF(patfile.employer = '', patfile.employer, addfile.name) AS e_name
FROM patfile
LEFT JOIN addfile ON patfile.employer = addfile.code
请在数据库文档中查找IF
,ISNULL
或COALESCE
等函数。