Php MySQL PDO不在查询中
我对一个查询有问题(见下文) 我想从表Php MySQL PDO不在查询中,php,mysql,pdo,Php,Mysql,Pdo,我对一个查询有问题(见下文) 我想从表abb和表amne中获取表abb\u elev\u mal中不存在的所有数据 当在表abb elev\u mal中找不到ident和elev\u id时,我想从表abb中选择所有内容 问题:提供了错误的数据 有什么建议吗 public function get_abb($status, $arskurs, $elev_id, $antal_visningar) { $query = $this->db->prepare("
abb
和表amne
中获取表abb\u elev\u mal
中不存在的所有数据
当在表abb elev\u mal
中找不到ident和elev\u id时,我想从表abb
中选择所有内容
问题:提供了错误的数据
有什么建议吗
public function get_abb($status, $arskurs, $elev_id, $antal_visningar) {
$query = $this->db->prepare("
SELECT ab.*, aa.*
FROM `abb` as ab
INNER JOIN `amne` as aa
ON ab.amne_id = aa.amne_id
WHERE (ab.arskurs = ? AND ab.aktiv = ?)
AND
NOT EXISTS (
SELECT *
FROM `abb_elev_mal` as am
WHERE am.ident = ab.ident AND am.elev_id = ?
)
ORDER BY ab.datum DESC
LIMIT ?");
$query->bindValue(1, $arskurs,PDO::PARAM_INT);
$query->bindValue(2, $status, PDO::PARAM_INT);
$query->bindValue(3, $elev_id, PDO::PARAM_INT);
$query->bindValue(4, $antal_visningar, PDO::PARAM_INT);
try{
$query->execute();
return $query->fetchAll();
} catch(PDOException $e){
die($e->getMessage());
}
} // End get_abb
更新:
SELECT *
FROM `abb` as ab
INNER JOIN `amne` as aa
ON ab.amne_id = aa.amne_id
WHERE (ab.arskurs = ? AND ab.aktiv = ?)
AND ab.ident NOT IN
(
SELECT ab.ident
FROM `abb_elev_mal`
WHERE elev_id = ?)
ORDER BY ab.datum DESC
LIMIT ?");
但输出相同
第二次更新:
SELECT *
FROM `abb` as ab
INNER JOIN `amne` as aa
ON ab.amne_id = aa.amne_id
WHERE (ab.arskurs = ? AND ab.aktiv = ?)
AND ab.ident NOT IN
(
SELECT ab.ident
FROM `abb_elev_mal`
WHERE elev_id = ?)
ORDER BY ab.datum DESC
LIMIT ?");
选择1
SELECT *
FROM `abb`
WHERE arskurs =8
AND aktiv =1
输出:44结果
选择2
SELECT *
FROM `abb_elev_mal`
WHERE elev_id =934
输出:16个结果
输出:与选择2相同的16个结果 如何找到“缺失”的28个结果(在SELECT 1中输出的44个结果中) 解决了它。见下文
$query = $this->db->prepare("
SELECT *
FROM `abb` ab
INNER JOIN `amne` am
ON ab.amne_id = am.amne_id
WHERE ab.ident
NOT IN
(SELECT ident FROM `abb_elev_mal` WHERE elev_id = :elev_id)
AND arskurs = :arskurs AND aktiv = :status
ORDER BY datum DESC
LIMIT :visningar
");
$query->bindValue(':elev_id', $elev_id, PDO::PARAM_INT);
$query->bindValue(':arskurs', $arskurs,PDO::PARAM_INT);
$query->bindValue(':status', $status, PDO::PARAM_INT);
$query->bindValue(':visningar', $antal_visningar, PDO::PARAM_INT);
解决了。见下文
$query = $this->db->prepare("
SELECT *
FROM `abb` ab
INNER JOIN `amne` am
ON ab.amne_id = am.amne_id
WHERE ab.ident
NOT IN
(SELECT ident FROM `abb_elev_mal` WHERE elev_id = :elev_id)
AND arskurs = :arskurs AND aktiv = :status
ORDER BY datum DESC
LIMIT :visningar
");
$query->bindValue(':elev_id', $elev_id, PDO::PARAM_INT);
$query->bindValue(':arskurs', $arskurs,PDO::PARAM_INT);
$query->bindValue(':status', $status, PDO::PARAM_INT);
$query->bindValue(':visningar', $antal_visningar, PDO::PARAM_INT);
为什么不在(ids)中使用
NOT
我已经尝试过了,但是没有成功。比如->ab.ident NOT IN()
。您是否尝试过直接在MySQL中运行查询?我已经用MySQL中的一些查询结果更新了我的问题。关于如何找到“缺失”的28个结果,有什么建议吗?谢谢您的时间。为什么不在(ids)中使用NOT
我已经尝试过了,但是没有成功。比如->ab.ident NOT IN()
。您是否尝试过直接在MySQL中运行查询?我已经用MySQL中的一些查询结果更新了我的问题。关于如何找到“缺失”的28个结果,有什么建议吗?谢谢你抽出时间。