というMySQLテーブルがありますaccounts
。このテーブル内には、と呼ばれるフィールドがありますsalesmanager_id
。99%の場合、このフィールドの値は、特定の顧客のすべてのアカウントで常に同じです(で指定customer_id
)。
私がやろうとしているのは、customer_id
複数のセールスマネージャーにアカウントが割り当てられている顧客のを見つけることです。例えば:
+------------------------------------+
| id | customer_id | salesmanager_id |
|------------------------------------|
| 1 | 12 | 4 |
| 2 | 12 | 4 |
| 3 | 14 | 3 | <-- I want this customer_id
| 4 | 14 | 4 |
+------------------------------------+
上記の例では、customer_id
14にはsalesmanager_id
3と4の両方が割り当てられています。私のリストのためにそれを取得したいとcustomer_id
思います。
次のクエリを試しましたが、空の結果が返されます(少なくともいくつかの違いがあると確信しています)。
SELECT `name`, `customer_id` AS `customer`, `salesmanager_id` FROM `accounts`
WHERE `salesmanager_id` NOT IN (
SELECT `salesmanager_id` FROM `accounts` a
LEFT JOIN `customers` c ON (a.customer_id = c.id)
WHERE a.customer_id=c.id
) GROUP BY `customer`;