我有桌子(员工)A:
+----+---------+
| ID | NAME |
+----+---------+
| 1 | ROBERT |
| 2 | JAMES |
| 3 | RICHARD |
| 4 | KANYE |
| 5 | DYLAN |
| 6 | JOHN |
| 7 | JEAN |
| 8 | LOKI |
| 9 | ADAM |
+----+---------+
和表(员工)B:
+----+---------+
| ID | NAME |
+----+---------+
| 1 | ROBERT |
| 2 | JAMES |
| 3 | RICHARD |
| 4 | KANYE |
| 5 | DYLAN |
+----+---------+
那些人是我的“雇员”。表B中的名称是我数据库中的所有员工,表A中的名称是我分配给项目1的所有员工。
我想隐藏已在表A中出现的表B中的所有名称,因为我不想将同一名员工重新分配到项目n°1。
如何使用jQuery解决此问题?
答案 0 :(得分:0)
客户端检查将是:
function compareLists(listA, listB){
var resultList = [];
listA.forEach(function(itemA){
listB.forEach(function(itemB){
if (itemB.name !== itemA.name)resultList.push(itemB);
}
}
return resultList;
}
或在服务器端(数据库):
select * from table_b where name not in (select name from table_a)
问候
答案 1 :(得分:0)
通常你应该使用SQL
在服务器端执行此操作,如已经回答的那样。但是,既然你问了javascript。这是在客户端过滤它的方法:
//collect list of names in A
var table = document.getElementById("TableA");
var names = []
for (var i = 0, row; row = table.rows[i]; i++) {
names.push(row.celss[1]);
}
//check names in B
table = document.getElementById("TableB");
for (var i = 0, row; row = table.rows[i]; i++) {
if(jQuery.inArray(row.cells[1], names) !== -1){
//show row
}else{
//hide row
}
}
答案 2 :(得分:0)
我在Jquery中没有那么多知识..
但是这个查询可以提高大型数据库的性能。
SELECT
FROM TableB
LEFT JOIN TableA ON TableB.name=TableA.name // id will be better than name
WHERE TableB.name IS NULL
希望这有帮助