2009-02-27 6 views
1

Comment puis-je interroger ma base de données SQL et trouver toutes les commandes en double où un client a commandé quelque chose plus d'une fois?Comment puis-je trouver des commandes en double par client?

+0

Que diriez-vous quelques conseils sur ce que vos clients et des commandes et des articles commander des tableaux ressemblent? –

+0

Voté pour fermer. Pas une vraie question. –

+0

Ne soyez pas aussi grossiers ... La question n'est en effet pas très claire, mais il pourrait avoir du mal à expliquer ce qu'il veut dire en anglais. –

Répondre

6

Pas une question super claire, mais je comprends l'essentiel. Je ne sais pas ce que votre base de données ressemble, mais votre requête ressemblerait à quelque chose comme ceci:

SELECT customer_id, count(*) FROM orders 
GROUP BY customer_id 
HAVING count(*) > 1 
3
SELECT customerId, productId, count(productId) 
FROM CustomerOrders 
GROUP BY customerId 
HAVING count(productId) > 1 
1

Une plate-forme, la version aiderait. Ainsi serait un tableau d'échantillon. Voici donc une table de commandes d'échantillons:

SQL> select * from orders; 

    CUST_ID ORDER_ID ORDER_DAT 
---------- ---------- --------- 
    1  1 25-FEB-09 
    1  2 24-FEB-09 
    1  3 23-FEB-09 
    2  4 24-FEB-09 
    2  5 23-FEB-09 
    2  6 22-FEB-09 
    3  7 23-FEB-09 
    9  8 22-FEB-09 
    9  9 21-FEB-09 
    4  10 22-FEB-09 
    4  11 21-FEB-09 
    4  12 20-FEB-09 
    5  13 21-FEB-09 
    5  14 20-FEB-09 
    5  15 19-FEB-09 
    6  16 20-FEB-09 
    11  17 19-FEB-09 
    10  18 18-FEB-09 
    7  19 19-FEB-09 
    7  20 18-FEB-09 
    7  21 17-FEB-09 
    8  22 18-FEB-09 
    8  23 17-FEB-09 
    8  24 16-FEB-09 

24 rows selected. 

Les travaux de sélection suivants sur ce tableau pour une sortie simple:

1* select cust_id, count(*) from orders group by cust_id having count(*) > 1 
SQL>/

    CUST_ID COUNT(*) 
---------- ---------- 
    1  3 
    2  3 
    4  3 
    5  3 
    8  3 
    7  3 
    9  2 

7 rows selected. 
Questions connexes