IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage SQL Discussion :

récupérer somme + dernière ligne d'une table en une requête sans jointure


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut récupérer somme + dernière ligne d'une table en une requête sans jointure
    Bonjour,
    J'ai un problème tout simple auquel je ne trouve pas de solution.

    -------
    |id| |
    -------
    | 1| 1|
    | 2| 2|
    | 3| 7|
    | 4| 3|
    -------

    Je souhaite caluler la somme de ces valeurs ainsi que la dernière valeur insérée en ne faisant qu'une requête et sans utiliser de jointure, est-ce que c'est possible ? Sachant que celà s'intégre dans un problème plus vaste.

    Dans l'exemple ci-dessus, j'aimerais récupérer 13 et 3.

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 140
    Points : 166
    Points
    166
    Par défaut
    Salut,

    Tu ne peux pas te baser sur les ids pour définir le dernier élement inséré.
    Les Ids ne se suivent pas forcement et ne sont pas toujours croissant (bien que dans la plupart des cas il le sont).

  3. #3
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    je ne vois vraiment pas l'intêret de faire ceci... mais bon, pas de jointures, comme demandé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (
       SELECT SUM(Tsum.val)
       FROM table Tsum
    ) UNION (
       SELECT Tlast.val
       FROM table Tlast
       WHERE Tlast.id = (
          SELECT MAX(T.id)
          FROM table T
       )
    )
    ensuite, j'ai supposé ici que dernier élément inséré = id le plus grand...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par mdevlieg
    Salut,

    Tu ne peux pas te baser sur les ids pour définir le dernier élement inséré.
    Les Ids ne se suivent pas forcement et ne sont pas toujours croissant (bien que dans la plupart des cas il le sont).
    Hum, je n'y avais pas pensé, mais effectivement les id ne se suivent pas forcément.

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par shiroufr
    Hum, je n'y avais pas pensé, mais effectivement les id ne se suivent pas forcément.
    chuis transparent ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Swoög
    Salut !

    je ne vois vraiment pas l'intêret de faire ceci... mais bon, pas de jointures, comme demandé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    (
       SELECT SUM(Tsum.val)
       FROM table Tsum
    ) UNION (
       SELECT Tlast.val
       FROM table Tlast
       WHERE Tlast.id = (
          SELECT MAX(T.id)
          FROM table T
       )
    )
    ensuite, j'ai supposé ici que dernier élément inséré = id le plus grand...

    merci beaucoup, j'étais entrain de te répondre.
    je vais essayer de tester ta fonction, et je te dirais si ça fonctionne mieux.
    c'est vraiment dommage qu'il n'y ai pas une fonction du genre LAST.

    ca m'aurait permit de faire :
    SELECT MAX(prix), LAST(prix) FROM table

    sachant qu'en réalité je souhaite intégrer celà dans une requête plus vaste avec des WHERE, LEFT JOIN, GROUP. J'ai donné un tout petit extrait, pour mieux faire restortir mon problème.

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    wi, désolé pour la réaction, mais des fois, il y en a qui réponde au premier (ou dernier) message et c'est tout donc... :\

    à vue de pif, je ne vois pas d'autre choses..., là même si les id ne se suivent pas, du moment qu'ils sont dans l'ordre croissant, c'est bon ensuite, en théorie, l'ordre (d'insertion ou de présentation) n'est pas quelque chose qui devrait être important dans une requête, ça relève plus de la présentation que de la selection de données
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. Réponses: 1
    Dernier message: 19/10/2011, 12h13
  3. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  4. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  5. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo