0

PHPでコーディングされた時点でCMSを使用していると、小さな「障害」が発生しました。

PDO(mysql)接続を使用していて、2つのテーブルがあります。

Navigation_links次の列があります:idtitleおよびpageid Navigation_links_usergroups_relationsこれらの列がある場合:linkidおよびusergroupid

何よりもまず、リレーションテーブルに表示されていないすべてのリンクを取得するクエリを作成しようとしています。これは私にとって非常に難しいことです。私はこのようなことを試しました:

SELECT navigation_links.id ,navigation_links.title, navigation_links.pageid 
  FROM navigation_links, navigation_links_usergroups 
 WHERE navigation_links.id != navigation_links_usergroups.linkid

私の考えでは、これは「リレーションテーブルに存在しないすべてのリンクを表示する」という意味になります。存在しないリンクは誰にでも表示されるはずだからです。

何か提案やアイデアはありますか?私はそれを行う方法があると確信しています。しかし、多分私は間違った角度から問題を攻撃していますか?

4

2 に答える 2

0

次のように、相関サブクエリを使用する必要があります。

SELECT l.id, l.title, l.pageid
  FROM navigation_links AS l
 WHERE NOT EXISTS(
           SELECT lug.* 
             FROM navigation_links_usergroups AS lug
            WHERE lug.linkid = l.id
       )
于 2013-02-28T11:18:21.717 に答える
0
SELECT n.id, n.title, n.pageid
    FROM navigation_links n, navigation_links_usergroups nl 
        WHERE 
            n.id <> nl.linkid

それがどうなるか教えてください。

于 2013-02-28T11:17:23.933 に答える