2017-04-26 7 views
0

私は2つのテーブル、friends_tableとinvitations_tableを持っています。 invitations_tableはfriends_tableのサブセットです。私はinvitations_tableの補完を照会したいと思います。両方のテーブルからの関連フィールドはuser_idです。テーブルの一部を照会する方法

friends_table 

    columns; id, user_one, user_two 

invitations_table 

    columns; id, event_id, request_to, request_from 

ので、私はそれらの列のフィールドはinvitations_tableでrequest_to列のフィールドに等しくないuser_one、friends_tableのuser_two、からフィールドを照会します。やはり、invitations_tableのすべてのユーザーIDがfriends_tableに存在します。

これまでの私の試み。

$uninvited = "SELECT user_one, user_two FROM friends_table WHERE user_one, user_two NOT IN (SELECT user_one, user_two FROM friends_table WHERE user_one, user_two IN (SELECT request_to FROM invitees_table))"; 
    $uninvited_query = mysqli_query($conn, $uninvited); 
    while($uninvited_array = mysqli_fetch_array($uninvited_query)){ 


     $uninvited_friends =$uninvited_array['user_one']; 
     $uninvited_friend =$uninvited_array['user_two']; 

echo $uninvited_friends; 
echo $uninvited_friend; 

ですから、私は次のようにエラーになります。

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given 

これはwhileループに対応します。うまくいけば、これは私の質問を明確にし、これまでの回答に感謝します。私はまた、別の試みでこの同じクエリの失敗を取得します。別のため

$uninvited = "SELECT friend_table.user_one AND friend_table.user_two EXCEPT (SELECT invitees_table.request_to)"; 
    $uninvited_query =mysqli_query($conn, $uninvited); 
     while($uninvited_array = mysqli_fetch_array($uninvited_query)){ 

      $uninvited_user = $uninvited_array['user_one']; 
      $uninvited_username = getuser($uninvited_user, 'username'); 

      echo $uninvited_username; 

私はこれに、それが問題だったかどうかを確認するために、私の$招かれざるクエリの構文を変更し、してみてください。

$uninvited = "SELECT user_one AND user_two FROM friend_table EXCEPT (SELECT request_to FROM invitees_table)"; 

でも、他のクエリと同じようにクエリが失敗します。

+0

[[EXCEPT]はMySQLではサポートされていません](http://stackoverflow.com/questions/26426619/using-except-operator-on-mysql-5-1-version) – tadman

答えて

0

Hmmm。 。 。どのようにnot existsについてですか?

SELECT f.user_one, f.user_two 
FROM friend_table f 
WHERE NOT EXISTS (SELECT 1 
        FROM invitees_table i 
        WHERE i.request_to = f.user_one and i.request_from = f.user_two 
       ); 

編集上の注意:あなたのSQLコードは、あなたが明らかに言語についてほとんど分かっていないので、間違っています。私はあなたが効果的にそれを使用したい場合は、SQLの学習に多少時間を費やすことをお勧めします。

関連する問題