ここに私のテーブルの画像があります:
次のように、class_id が 48 ではないすべての行を選択します。
SELECT * FROM `clients` WHERE `class_id` != '$class_id' AND user_id = ".$_SESSION['user_id']."
ここに問題があります。ご覧のとおり、class_id 48 と class_id 64 を持つ Steve Puddin Robinson の行があります。この人物は既にクラス 48 にいるため、その名前も結果から除外したいと考えています。first_name
last_name
それは理にかなっており、特定のものをnickname
クエリに渡さずにこれは可能ですか
ワーキングクエリ
SELECT *
FROM `clients`
WHERE `user_id`= ".$_SESSION['user_id']." AND `nickname`
NOT IN(SELECT `nickname` FROM `clients`
WHERE `class_id` = '$class_id')
変更されたクエリ
SELECT c.* FROM clients c
LEFT JOIN clients c1
ON `c1`.`first_name` = `c`.`first_name`
AND `c1`.`last_name` = `c`.`last_name`
AND `c1`.`nickname` = `c`.`nickname`
AND `c1`.`class_id` = 48
WHERE `c1`.`class_id` IS NULL;