5

という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_id14にはsalesmanager_id3と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`;
4

1 に答える 1

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

これは基本的にsalesmanager_idそれぞれのすべてを取得し、一意の値customer_idが複数ある場合はが返されます。salesmanager_idcustomer_id

于 2012-06-20T08:37:46.677 に答える