1
SELECT * 
FROM domains
WHERE domains_id IN
      (
        SELECT domains_subscriptions_domain
        FROM domains_subscriptions
        WHERE domains_subscriptions_selmgec='$_SESSION[selmgec]'
      )
AND domains_id NOT IN
      (
        SELECT domains_block_domain
        FROM domains_block
        WHERE domains_block_selmgec='$_SESSION[selmgec]'
          AND domains_block_member='$_SESSION[member]'
      )
ORDER BY RAND()

domain_subscriptions にもある domain にあるすべてのドメインを取得したいのですが、domains_blocks にはありません。上記のクエリでうまく機能します。しかし、私は追加できるようにしたい

AND domains_id NOT IN
      (
         SELECT domains_hits_domain 
         FROM domains_hits
         WHERE domains_hits_selmgec='$_SESSION[selmgec]'
            AND domains_hits_member='$_SESSION[member]'
      )

これをクエリに追加すると、domains_hits テーブルにあるドメインも除外されますが、現在、domains_block テーブルと domain_hits テーブルの両方にあるドメインのみを除外すると推測しているため、すべてのドメインが表示されますが、それはどちらかです!

どんな助けでも大歓迎です

4

1 に答える 1

1

これを試して:

SELECT * 
FROM domains
WHERE domains_id IN
      (
        SELECT domains_subscriptions_domain
        FROM domains_subscriptions
        WHERE domains_subscriptions_selmgec='$_SESSION[selmgec]'
      )
AND domains_id NOT IN
      (
        SELECT domains_block_domain
        FROM domains_block
        WHERE domains_block_selmgec='$_SESSION[selmgec]'
          AND domains_block_member='$_SESSION[member]'
        UNION ALL
        SELECT domains_hits_domain 
        FROM domains_hits
        WHERE domains_hits_selmgec='$_SESSION[selmgec]'
           AND domains_hits_member='$_SESSION[member]'
      )
ORDER BY RAND()

また

SELECT * 
FROM domains
WHERE domains_id IN
      (
        SELECT domains_subscriptions_domain
        FROM domains_subscriptions
        WHERE domains_subscriptions_selmgec='$_SESSION[selmgec]'
      )
AND NOT (
      domains_id IN
      (
        SELECT domains_block_domain
        FROM domains_block
        WHERE domains_block_selmgec='$_SESSION[selmgec]'
          AND domains_block_member='$_SESSION[member]'
      )
      OR
      domains_id IN
      ( 
        SELECT domains_hits_domain 
        FROM domains_hits
        WHERE domains_hits_selmgec='$_SESSION[selmgec]'
           AND domains_hits_member='$_SESSION[member]'
      )
    )
ORDER BY RAND()
于 2013-01-20T10:42:45.207 に答える