0

私は2つのテーブルを持っています:

Customers:
- ID
- NAME

Modulemembers:
- ID
- customer_id
- enabled

これを使用して、一部の顧客が自分のサイトの機能を有効にします。サイトの管理者が顧客のモジュールを追加できるフォームがあるので、modulemembersテーブルのメンバーではない顧客を検索するクエリが必要です。

私はこれを作りました:

SELECT customers.id, 
       customers.name 
FROM   customers, 
       modulemembers 
WHERE  customers_id != modulemembers.cust_id 
ORDER  BY customers.name 

しかし、それは機能しません。私は何が間違っているのですか?

4

3 に答える 3

4

句で使用NOT EXISTSして結果を取得できます。WHERE

SELECT c.id, 
  c.name 
FROM customers c
WHERE not exists (select customer_id
                  from modulemembers m
                  where c.id = m.customer_id)
order by c.name
于 2013-03-11T20:52:02.147 に答える
2

LEFT OUTER JOINに基づいてとフィルターを使用できますNULLs。以下のクエリは、customersテーブルとテーブルからすべての結果を取得しmodulemembersます。modulemembersテーブルに一致するものがない場合は、custidになりますNULL

SELECT c.id, c.name 
FROM customers c
    LEFT OUTER JOIN modulemembers m ON c.customers_id = m.cust_id 
WHERE m.custid IS NULL
ORDER BY c.name
于 2013-03-11T20:48:03.353 に答える
0

次のようなことを試してください:

   SELECT c.ID AS customerId,
          c.NAME AS fullName,
          m.ID AS memberId
     FROM Customers AS c
LEFT JOIN Modulemembers AS m ON m.customer_id = c.ID
    WHERE m.ID IS NULL;
于 2013-03-11T20:49:11.457 に答える