1

ID を介してリンクする 2 つのテーブルがあり、1 つは「submit_moderate」、もう 1 つは「submit_post」です。

「submit_moderate」テーブルは次のようになります

id     moderated_by     post
1      James            60
2      Alice            32
3      Tim              18
4      Michael          60

「submit_moderate」テーブルに従って、単純なクエリを使用して「submit_post」テーブルからデータを取得します。

$get_posts = mysql_query("SELECT * FROM submit_moderate WHERE moderated_by!='$user'");

$userログインしている人物です。

今私の問題は、ユーザー「Michael」でこのクエリを実行すると、これが取得されることです

1   James   60
2   Alice   32
3   Tim     18

技術的にはこれで正しいのですが、60 は James だけでなく Michael にも関連付けられているため、最初の行を取得したくありません。基本的に、その値「60」を取得したくありません。

なぜこれが起こっているのかはわかっていますが、これを行う方法がわかりません。ヒントやアドバイスをいただければ幸いです。

4

2 に答える 2

3
SELECT DISTINCT post
  FROM submit_moderate
 WHERE post NOT IN (SELECT post
                      FROM submit_moderate
                     WHERE moderated_by = 'Michael')

PS: 確かではありませんが、場合によっては、ネストされたクエリの選択部分を次のように変更する価値があるでしょう。SELECT DISTINCT post

于 2012-06-11T04:36:32.827 に答える
1

$user = 'Michael'; とします。

投稿でジェームスがマイケルと一致すると言ったように、ユーザーの最初の行が本当に必要ない場合は、

$post = mysql_query_first("SELECT post FROM submit_moderate WHEREmoderated_by='$user'");

$get_posts = mysql_query("SELECT * FROM submit_moderate WHEREmoderated_by!='$user' and post!='$post');

また

$get_posts = mysql_query("SELECT * FROM submit_moderate WHERE post NOT IN (SELECT post FROM submit_moderate WHEREmoderated_by = 'Michael') andmoded_by != 'Michael' ");

于 2012-06-11T04:48:14.077 に答える