2016-11-29 13 views
2

phpのwhere句の中に別のmysqlクエリを置く最も簡単な方法は何ですか?例えばwhere句の中に別のクエリを入れるmysqlとphp

私が試してみました:

 $sql = "SELECT app, description FROM all-apps WHERE app!='(SELECT user, app FROM users-apps WHERE user="$user_name")'"; 

を、私は、データベース内のすべてのアプリケーションエントリを起動する必要があります。ユーザーが自分のリストに同じアプリ名を持っているかどうかを確認します。そうなら、それは現れません。

基本的には2つのデータベースがすべてのアプリケーションを持ち、もう1つはユーザーが使用したアプリケーションがあり、ユーザーが使用していないすべてのアプリケーションを見つけるためにクエリが必要です。

この質問が標準であるかどうかをご質問ください。私は将来の間違いを修正できるように意見を述べてください。

答えて

2

いくつかの変更は、このことを

"SELECT app, description FROM all-apps WHERE app NOT IN (SELECT app FROM users-apps WHERE user='{$user_name}')"; 

注意を必要とし、元のクエリは、SQLインジェクションの脆弱性あなたを残すことができます。 PDO準備文を使用してください。

0

おかげで、あなたの助けのすべてに私が動作するようにこのクエリを取得することができた:

$sql = "SELECT * FROM all_apps WHERE app NOT IN (SELECT app FROM users_apps WHERE user='{$user_name}') "; 

これは最初のテーブルを選択することで動作します。次に、どの列をどこにするかを選択します。次に、INにするかINにするかをINに入れます。次に、2番目のクエリを角カッコで囲みます。必ず1つの列だけを選択してください。 IN句は、複数の結果がある場合にも機能します。