Maison  >  Questions et réponses  >  le corps du texte

Résultats de requête MySQL incohérents

<p>J'ai une table appelée « transaction » qui contient les transactions effectuées sur un certain système de paiement. Je voulais obtenir le rapport quotidien de juillet 2023 (par exemple) et j'ai exécuté la requête suivante : </p> <pre class="brush:sql;toolbar:false;">SELECT DAY(CREATED), count(*) FROM `transaction` OÙ STATUT = 'approuvé' ET MOIS (CRÉÉ) = 07 ET ANNÉE (CRÉÉ) = 2023 GROUPE PAR JOUR(CRÉÉ) ≪/pré> <p>Le résultat saute quelques jours, par exemple pour le 7ème jour du mois, je n'obtiens rien, mais lorsque je modifie la requête en : </p> <pre class="brush:sql;toolbar:false;">SELECT DAY(CREATED), count(*) FROM `transaction` OÙ STATUT = 'approuvé' ET MOIS (CRÉÉ) = 07 ET ANNÉE (CRÉÉ) = 2023 ET JOUR (CRÉÉ) = 7 GROUPE PAR JOUR(CRÉÉ); ≪/pré> <p> (En gros, en ajoutant <code>DAY(CREATED) = 7</code> à la requête)</p> <p>Il renvoie le décompte du jour 7.</p> <p>Pourquoi sont-ils incohérents ? Comment puis-je résoudre ce problème lors de la première requête ? </p> <p>Merci d'avance :)</p> <p>Modifier : Structure du tableau et exemples de données : </p> <pre class="brush:sql;toolbar:false;">CREATE TABLE `transaction` ( `ID` int NON NULL, `PLATFORM_ID` int NON NULL, `ENTITY_ID` int NON NULL, `RELATED_TRANSACTION_ID` int NON NULL PAR DÉFAUT '0', `ORIGIN_ID` varchar(120) NON NULL, `BANQUE` varchar(64) NULL PAR DÉFAUT, `AMOUNT` double NON NULL, `MONNAIE` varchar(3) NON NULL, `TYPE` varchar(2) JEU DE CARACTÈRES utf8mb4 COLLATE utf8mb4_0900_ai_ci NON NULL, datetime `CRÉÉ` NON NULL, `CARD_NO` varchar(20) NULL PAR DÉFAUT, `CARD_BRAND` varchar(45) NULL PAR DÉFAUT, `CARD_EXPIRE_YEAR` int DEFAULT NULL, `CARD_EXPIRE_MONTH` varchar(45) NULL PAR DÉFAUT, `HOLDER_NAME` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `EMAIL` varchar(256) NULL PAR DÉFAUT, `STATUS` enum('approuvé', 'refusé', 'filtré', 'en attente') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `IS_3D` tinyint(1) NULL PAR DÉFAUT, `CREATED_AT` dateheure NON NULL PAR DÉFAUT CURRENT_TIMESTAMP, `AMOUNTEUR` double DEFAUT NULL, `IS_FRAUD` tinyint(1) NON NULL PAR DÉFAUT '0', Date `FRAUD_DATE` PAR DÉFAUT NULL, `KYC_DATE` dateheure PAR DÉFAUT NULL ) MOTEUR=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ≪/pré> <p>Exemple d'insertion :</p> <pre class="brush:sql;toolbar:false;">INSERT INTO `transaction` (`ID`, `PLATFORM_ID`, `ENTITY_ID`, `RELATED_TRANSACTION_ID`, `ORIGIN_ID`, `BANK`, `AMOUNT` , `CURRENCY`, `TYPE`, `CREATED`, `CARD_NO`, `CARD_BRAND`, `CARD_EXPIRE_YEAR`, `CARD_EXPIRE_MONTH`, `HOLDER_NAME`, `EMAIL`, `STATUS`, `IS_3D`, `CREATED_AT`, ` AMOUNTEUR`, `IS_FRAUD`, `FRAUD_DATE`, `KYC_DATE`) VALEURS (1, 1, 87, 0, '219114359', 'UNE BANQUE', 150, 'USD', 'DB', '2022-02-01 00:00:17', '000000XXXXXX0000', 'MasterCard', 2025 , '06', 'NOM FAMILLE', 'aaaaaaaaa@gmail.com', 'approuvé', 0, '2022-08-25 13:12:58', 150.7605, 0, NULL, NULL); ≪/pré> <p>J'ai omis la définition de l'index car je ne pense pas qu'elle soit pertinente dans ce cas. </p>
P粉514458863P粉514458863403 Il y a quelques jours454

répondre à tous(1)je répondrai

  • P粉476883986

    P粉4768839862023-08-16 00:16:50

    Après l'avoir exécuté dans la console MySQL, j'ai trouvé le problème. La raison est simple. Le système PhpMyAdmin ne limite l'affichage qu'à 25 lignes...

    .

    C'est mon erreur ! :O Merci beaucoup pour votre temps et votre soutien !

    répondre
    0
  • Annulerrépondre