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 :

Addition en SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2022
    Messages : 14
    Par défaut Addition en SQL
    Bonjour,

    Pour commencer je fais du SQL depuis peu donc merci de votre patience.
    Je suis bloqué sur une requête je m'explique :
    J'aimerais pouvoir faire une addition entre deux champs d'une même table qui ont une correspondance. Je met un morceau de la table et exemple de résultat avec si j'affiche tout.

    Commande
    ----------
    no_ligne
    desc
    quantite
    montant
    taxe_ligne

    no_ligne no_doc desc quantite montant taxe_ligne
    1 doc1 article a 1 10 Null
    2 doc1 taxe art a 1 5 1
    1 doc2 article b 1 30 Null
    2 doc2 taxe art b 1 10 1

    Je veux que ma requête affiche que la ligne 1 avec 'article a' mais que seul le montant soit modifié en additionnant le montant des deux lignes. Il faut également que je fasse correspondre le numéro de document que ce soit montant de la ligne 1 du doc1 + montant ligne 2 du doc 1 grace au champs taxe ligne qui fait la correspondance entre les deux lignes.

    J'ai essayé de faire correspondre avec un case mais je n'ai aucune idée de comment faire autrement actuellement. Je sais que le case fonctionne si on renvoit seulement un résultat.
    Voici un ex de requête que j'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT no_ligne, no_doc, desc, quantite, 
    CASE 
    	WHEN desc like 'taxe%' 
    		AND no_ligne IN (SELECT taxe_ligne from Commande) 
    		AND No_doc IN (SELECT No_doc FROM Commande THEN  montant + 
    			(SELECT 
    			CASE
    				WHEN desc like 'taxe%' THEN montant
    			END 
    			FROM Commande)
    END
    ,taxe_ligne from commande
    J'avais également vu l'utilisation du WHERE IN mais je ne vois pas comment faire une addition.
    La requête qui intégrera ce morceau renvois 300k lignes.

    j’espère avoir été assez claire.

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 452
    Par défaut
    Bonjour,
    Si tu as 6 lignes dans une commande, comment fais-tu le lien entre une ligne d'article et la ligne de taxe correspondante ?

    Ici il faut faire une jointure entre les lignes des commandes, d'où ma question:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select c1.desc, c1.quantite, c1.montant + c2.montant
    from commande as c1
    inner join commande as c2
    on c1.no_doc = c2.no_doc and ???


    Tatayo.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2022
    Messages : 14
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Si tu as 6 lignes dans une commande, comment fais-tu le lien entre une ligne d'article et la ligne de taxe correspondante ?
    Bonjour,
    Le lien se fait via le champs taxe_ligne. Pour une commande le no_ligne est unique. il peut y avoir 6 lignes et avoir seulement 2 articles qui ont la taxe. donc avoir juste 2 lignes 'taxe article..' et avoir un numéro de ligne sur ces 2 lignes qui correspondent a la taxe.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 452
    Par défaut
    Dans ton exemple je ne vois pas comment tu fais le lien entre les lignes 1 et 2 via la colonne taxe_ligne, vu que pour la ligne 2 cette colonne n'est pas renseignée.
    Je crois que je viens de comprendre: dans le cas d'une ligne de taxe, la colonne taxe_ligne contient le numéro de ligne pour laquelle cette taxe s'applique.
    Si c'est bien le cas, il suffit de modifier la jointure en conséquence dans ma requête pour que ça fonctionne.

    Tatayo.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2022
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2022
    Messages : 14
    Par défaut
    Oui c'est bien ça. Désolé si je n'ai pas été assez claire sur ce point.
    Je ne savais pas qu'on pouvait faire une jointure sur la même table. Je ne vois pas trop en quoi cela me permettrait de faire mon addition en réalité.

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 452
    Par défaut
    C'est pourtant ce que fait ma requête, il y a bien une addition dans le SELECT (pour la somme), et la jointure fait le rapprochement entre une ligne d'article et sa ligne de taxe.
    Il faut juste modifier la jointure comme je l'ai indiqué.

    Et comme tu indiques que certains produits ne font pas l'objet d'une taxe, il faut utiliser une jointure externe (et gérer les nuls bien sûr).

    Tatayo.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/01/2009, 16h01
  2. [SQL] Problème d'addition dans requete SQL
    Par cheers94wow dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/05/2006, 15h05
  3. [SQL] Addition sur condition
    Par Hannubis dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/03/2006, 16h05
  4. Requete SQL d'addition
    Par kernel57 dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/02/2006, 17h58
  5. Addition en SQL..
    Par Thomus38 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/11/2005, 13h28

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