-1

クエリするテーブルが 3 つあります。他の 2 つに応じて、最初の 1 つを選択します。最初のテーブルとは異なる ID のみが必要ですが、クエリがいくつかの重複を返しています... http://sqlfiddle.com/#!2/3e3d6/1

私のクエリ:

SELECT p.* 
    FROM posts p, blogs_subscribed s
    WHERE (p.user_id = s.user_id OR p.user_id = 1)
      AND p.id NOT IN (
      SELECT post_id 
      FROM posts_unsubscribed u
      WHERE u.post_id = p.id
         AND u.user_id = p.user_id);

SELECT p.* 
    FROM posts p, blogs_subscribed s
    WHERE (p.user_id = s.user_id OR p.user_id = 1)
      AND NOT EXISTS(
      SELECT null 
      FROM posts_unsubscribed u
      WHERE u.post_id = p.id 
        AND u.user_id = p.user_id);

何かアイデアはありますか?

4

1 に答える 1

0

あなたが探しているものを完全には理解していませんが、これはあなたが望んでいるものだと思います...

SELECT p.* 
    FROM posts p, blogs_subscribed s
    WHERE (p.user_id = s.user_id OR p.user_id = 1)
      AND p.id NOT IN (
      SELECT post_id 
      FROM posts_unsubscribed u
      WHERE u.post_id = p.id
         AND u.user_id = p.user_id)
      GROUP BY p.id;

SELECT p.* 
    FROM posts p, blogs_subscribed s
    WHERE (p.user_id = s.user_id OR p.user_id = 1)
      AND NOT EXISTS(
      SELECT null 
      FROM posts_unsubscribed u
      WHERE u.post_id = p.id 
        AND u.user_id = p.user_id)
      GROUP BY p.id;
于 2013-08-09T18:51:51.603 に答える