2016-08-30 6 views
1

この2つのテーブルの別のテーブルに存在しない方法は?別のテーブルに存在しない方法

Users table enter image description here

User_relationships table

enter image description here

、これが私の現在のクエリ

"SELECT * FROM `users` 
WHERE CONCAT(first_name, " ", last_name) LIKE '%' . $name . '%' 
    AND (`role_id` = 6 OR `role_id` = 4) 
ORDER BY `first_name` asc limit 15" 

であると私はguardian_id(user_id)user_relationships TA上に存在していないクエリに追加したいですUPDATE 1

select * from `users` 
    where not exists 
      (select 1 from `user_relationships` 
      inner join `users` on `user_relationships`.`guardian_id` = `users`.`id` 
      where `user_relationships`.`student_id` = 422) 

BLE私はこれを試してみましたが、まだ私にゼロ結果を返します。

私は唯一のVAR name = ?student_id = ?

+1

期待どおりの出力を追加しますか? – 1000111

+0

これを試してみてください**ユーザからu INNER JOIN User_relationships ur ON ur.guardian_id!= u.id WHERE CONCAT(u.first_name、 ""、u.last_name)LIKE '%' $ name。 u.first_nameによる '%' AND(u.role_id = 6 u.orrole_id = 4)の順序ASC LIMIT 15 ** **ここでは**結合**を使用しており、**ユーザーのテーブルのユーザーIDとUser_relationshipsテーブルは同じであってはいけません** ..それが動作するか何か問題があれば教えてください。 –

+0

私の質問を更新します –

答えて

0

は 'DISTINCT' でクエリ機能 "ではありません" を使用しようとしています。

次のような場合があります。

select * from users where CONCAT(first_name, " ", last_name) LIKE '%' . $name . '%' and (role_id= 6 or role_id= 4) and (id NOT IN (select DISTINCT guardian_id from User_relationships where student_id = $student_id)) order by first_name ASC limit 15 

まだ変更が必要な場合は教えてください。

+0

私は質問を更新します –

+0

新しい質問をチェックしてください。私はあなたと同じように保護されています。もしそうでなければ、あなたもそれを取り出すことができます。 –

関連する問題