我没有向用户显示所有可用属性的列表,而是尝试向他们展示他们尚未保存到其帐户中的所有属性。我在数据库的表格中记录了用户保存的属性,我通过属性的id
和用户id
进行记录。
所以我想写一个像
这样的查询 $query = "SELECT * FROM propertys WHERE id != 1 or 3";
然后选择id
为2的属性,并将其显示给用户,而不是他们已经看过并保存1和3的1和2和3的列表。
问题
上面写的这个查询似乎不起作用。它仍然显示所有属性,我不知道为什么。
编辑:
实际问题
现在它不会显示遗留的属性。上面的查询不显示属性1或3,这是有意的,但现在也不显示属性2.
答案 0 :(得分:0)
这不是SQL的工作方式。您试图在SQL语句中使用PHP“不相等”。您必须为正在使用的数据库使用正确的SQL。它应该看起来更像这样:
$query = "SELECT * FROM propertys WHERE id <> 1 OR id <> 3"
或者这个:
$query = "SELECT * FROM propertys WHERE id NOT LIKE 1 OR id NOT LIKE 3"
答案 1 :(得分:0)
如果我有一个行源,可用于问题中所述的可用值1,2和3的属性,例如
<!DOCTYPE html>
<html lang="en">
<head>
<title>Firebase Test</title>
<script src="https://www.gstatic.com/firebasejs/3.8.0/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
// your configs
};
firebase.initializeApp(config);
</script>
</head>
<body>
<input type="file" id="file" name="datafile">
<script>
function fileChange(ev) {
var target = ev.target;
var file = target.files[0];
var storageRef = firebase.storage().ref();
var thisRef = storageRef.child("public/" + file.name);
thisRef.put(file).then(function (snapshot) {
console.log('Uploaded a blob or file!');
});
}
var inputFile = document.getElementById('file');
inputFile.addEventListener('change', fileChange, false);
</script>
</body>
</html>
我有一个第二个表,其中包含为每个用户“分配”的属性的行,...每行代表分配给用户的属性,“缺失”行代表不属性的属性已分配,例如
property
id name
-- -------
1 foo
2 fi
3 fo
4 fum
我可能会使用反连接模式:从属性返回所有行,使用外部连接返回指定的属性,以及where子句中的条件,以排除存在匹配的所有行
我们希望如此:
user_assigned_property
user_name property_id
------- -----------
jack 1
jack 3
giant 3
giant 4
返回:
SELECT p.id
, p.name
FROM property p
LEFT
JOIN user_assigned_property a
ON a.property_id = p.id
AND a.user_name = 'jack'
WHERE a.property_id IS NULL
ORDER
BY p.id
答案 2 :(得分:0)
我至少找到了答案。从Here问题是尝试使用多个排除的写入语法。谢谢大家的帮助。