Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requête SELECT | GET complexe


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Requête SELECT | GET complexe
    Bonjour,

    Je dois réaliser une requête complexe et j'aurais besoin d'un expert pouvant m'aiguiller.

    Je dois parcourir ma table et identifier toutes les customerID, individuellement, qui ont une même date. Par exemple, si l'on prend la table ci-dessous :


    [TH]id[/TH]
    [TH]customerID[/TH]
    [TH]Date[/TH]
    [TH][/TH]
    1 1212 2020-08-01 X
    2 1212 2020-08-01 X
    3 1213 2020-10-21
    4 1214 2020-10-21
    5 1215 2020-10-21
    6 1216 2020-11-17 X
    7 1216 2020-09-11
    8 1216 2020-11-17 X
    9 1217 2020-07-05
    10 1217 2020-07-10
    11 1217 2020-07-12
    12 1218 2020-08-15
    13 1219 2020-08-15
    14 1220 2020-08-15
    15 1221 2020-12-11 X
    16 1221 2020-10-03
    17 1221 2020-11-26
    18 1221 2020-12-11 X
    19 1222 2020-10-07 X
    20 1222 2020-10-07 X

    la customerID 1212 possède deux records avec la même date
    la customerID 1216 possède trois records, dont deux avec la même date
    la customerID 1221 possède quatre records dont deux avec la même date
    enfin
    la customerID 1222 possède deux records avec la même date

    L'idée est que lorsque j'ai cette requête fonctionnelle, je puisse marquer dans ma table (index), les customerID qui ont au moins deux dates identiques, en indiquant par exemple en rouge gras les customerID retournées par la requête (je fais cela dans ma vue et je sais comment faire).

    Merci d'avance de vos suggestions.

    Bonne journée,

    Marc

  2. #2
    Modérateur

    Pour identifier les tuples (CustomerId, Date) qui apparaissent plusieurs fois dans la table; la requête suivante est suffisante :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select  CustomerId
        ,   `Date`
    from    matable
    group by CustomerId
        ,   `Date`
    having  count(*) > 1

    Pour ajouter une colonne avec un indicateur de présence de doublon, on pourrait faire une jointure externe entre la table et cette requête.
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  3. #3
    Membre à l'essai
    @All_24

    Merci beaucoup pour ton retour.

    Cela fonctionne, j'ai adapte en query builder :

    Code PHP :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $allcompleted = DB::table('orders_detail_new')
    			->select('orders_detail_new.customerID','orders_detail_new.deliverydate',DB::raw('COUNT(*) as count'))
    			->where('orders_detail_new.statusorderID','=',4)
    			->groupBy('orders_detail_new.customerID','orders_detail_new.deliverydate')
    			->having('count', '>' , 1)
                ->get();


    Merci encore et bonne journee,

    Marc

  4. #4
    Modérateur

    Citation Envoyé par marc-q Voir le message
    j'ai adapte en query builder
    ... ou : comment transformer une requête SQl lisible et explicite en un "machin" indigeste et propre à générer des incompréhensions
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

###raw>template_hook.ano_emploi###