2012-06-20 3 views
5

私はaccountsというMySQLテーブルを持っています。この表の中にsalesmanager_idというフィールドがあります。時間の99%で、このフィールドの値は、特定の顧客のすべての勘定科目(常にcustomer_idと指定されています)で同じです。MySQLテーブルの "エキゾチックな"値を見つける

私がしようとしているのは、複数のセールスマネジャーに割り当てられたアカウントを持つ顧客の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`; 

答えて

13
SELECT 
    customer_id 
FROM 
    accounts 
GROUP BY 
    customer_id 
HAVING 
    COUNT(DISTINCT salesmanager_id) > 1 

これは、基本的には、各customer_idsalesmanager_id Sの全てを取得し、複数のユニークなsalesmanager_id値がある場合、customer_idが返されます。

+0

ありがとう、それは私が必要としていたものです! – Oldskool

関連する問題