Sous-Requete qui affiche au plus un enregistrement

Résolu/Fermé
Bonjour ; jai une table
TRANSACTION( id_transaction;date_transaction;type_tansaction ; montant_transaction)
qui m'a permis de faire la requête suivante avec le code sql :
SELECT
      ( SELECT TOP 1 Montant_Transaction
         FROM TRANSACTION AS DUP 
         WHERE DUP.IdTransaction <Transaction.IdTransaction 
         ORDER BY Date_Transaction DESC) AS MontantMouvement
      , ( Select TOP 1 Type_Transaction
            FROM TRANSACTION AS DUP 
           WHERE DUP.IdTransaction<Transaction.IdTransaction 
           ORDER BY Date_Transaction DESC ) AS TypeMouvement
     , *
FROM [TRANSACTION];

le problème qui se pose c'est quand je saisie plusieurs enregistrements dans ma table et que je consulte ma requete il m'affiche un message d'erreur
" cette sous requête peut retourner au plus un enregistrement"
comment régler ce problème
merci d'avance

EDIT : Ajout des balises de code.

3 réponses

  1. Modérateur
    Bonjour,

    Pourquoi ne fais tu pas simplement
    SELECT TOP 1 Montant_Transaction AS MontantMouvement
                  ,Type_Transaction  AS TypeMouvement
                 , *
    FROM TRANSACTION AS DUP 
    WHERE DUP.IdTransaction <Transaction.IdTransaction 
    ORDER BY Date_Transaction DESC
    
    

    1. merci pour votre aide
      mais la requete ne fonctionne pas ; elle me demande de rentrer une valeur de parametre :
      transaction.idtransaction ; au lieu de transaction est ce que ce n'est pas "DUP" ; malgré cela elle n'affiche pas de données dans le résultat de la requete
      que faire alors?
    2. Mon problem n'est toujours pas réglé
    3. Contributeur
      @Oholabi1234bonjour,
      examine bien le nom des champs de la table, et vérifie qu'ils sont correctement écrits dans la requête.
    4. @yg_beJe tiens compte de ma requête ou celle de jordane 45 pour la vérification ?
  2. Contributeur
    tu avais écrit que la requête demande de rentrer une valeur de parametre :
    transaction.idtransaction
    1. Elle marche maintenant parce que j'ai remplacé Transaction.idtransaction par Dup.idtransaction en effet, elle Permet de faire des saisies qui se déversent dans la table Transaction.
      En fait je souhaiterais faire un état qui affiche le solde à l'ouverture de la journée et c'est cette collone qui ne fonctionne pas bien
    2. @Oholabi1234En fait la requête devra être utilisée pour afficher un état avec les colonnes suivantes :
      Idtransaction
      Datetransaction
      Solde ouverture
      Montant transaction
      Type Transaction
      soldecloture
    3. Contributeur
      @Oholabi1234pourquoi changes-tu d'identifiant sur le forum?
      si tu as modifié la requête, ne penses-tu pas qu'il serait utile de nous montrer la nouvelle requête?
    4. @yg_beConcernant mon identifiant c'est une erreur de manipulation
  3. SELECT TOP 1 DUP.Montant_Transaction AS MontantMouvement, DUP.Type_Transaction AS TypeMouvement, DUP.Date_Transaction, DUP.IdTransaction, *
    FROM [TRANSACTION] AS DUP
    WHERE (((DUP.IdTransaction)<[DUP].[IdTransaction]))
    ORDER BY DUP.Date_Transaction DESC;
    1. Contributeur
      et cette requête retourne quelque chose? bizarre!
    2. @yg_benon elle ne retourne rien de bizarre ; elle permet de faire les saisies des differentes transactions et ces saisies se retrouvent dans la table trasactions
    3. Contributeur
      @oholabi1234cette requête retourne-t-elle quelque chose?
      peux-tu montrer cela?
    4. @yg_beEn fait quand j'ouvre la requête les champs sont vides