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

MS SQL Server Discussion :

Une question pour les pros


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2011
    Messages : 48
    Par défaut Une question pour les pros
    Bonjour,
    J'ai créer un service de comptabilité pour mon site et j'ai un petit soucie.

    J'aimerais qu'en insérant une date dans un champs de recherche, les commandes du site, les commandes extérieures du site et les frais de l'année insérés figure sur la page de recherche.

    J'ai réussi sans aucun problèmes, mais j'ai un petit soucie lors de l'addition final de tout ça ! voici mon sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ((commandes.total_ttc)+(commandes_ext.total_ttc))-(frais.total_ttc) AS benefice_total_ttc
    FROM commandes, commandes_ext, frais
    WHERE commandes.date AND commandes_ext.date AND frais.date 
    LIKE %motcle%
    la variable "motcle" fait appel à un champ de recherche :
    motcle
    Text
    NULL
    $_POST['date_compta']

    Quelqu'un de fort sympathique pourrait il corriger ma sql ?
    A mon avis c'est dans WHERE que sa cloche...
    Merci d'avance...

  2. #2
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Bonjour,

    Pensez à mettre votre code à l'aide des balises pour plus de lisibilité...

    Pour votre syntaxe vous n'êtes pas loin, vous devez seulement repeter le predicat pour chaque colonne et ajouter les jointures entre les tables ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT ((commandes.total_ttc)+(commandes_ext.total_ttc))-(frais.total_ttc) AS benefice_total_ttc
    FROM commandes
                LEFT OUTER JOIN commandes_ext
                   ON commandes.[date]=commandes_ext.[date]
                LEFT OUTER JOIN frais 
                   ON frais.[date]=commandex.[date]
    WHERE commandes.date LIKE %motcle% AND commandes_ext.date LIKE %motcle% AND frais.date LIKE %motcle%
    Question pourquoi faites vous un LIKE? quel est le type de commandes_ext.date, frais.date etc.?

    Les jointures (LEFT OUTER JOIN)partent du principe que vous n'avez qu'une ligne par date dans vos tables mais ce n'est surement pas le cas?
    Vos tables ne sont'elles pas liées par un identifiant?

    Quelle est votre version de SQL SERVER ?

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Je suis entièrement d'accord avec les questions, remarques précédente et solution proposée par iberserk.
    Cela m’étonnerais beaucoup, que, sur le plan fonctionnel, ces 3 tables (commandes, commandes_ext et frais) soient liées par le seul champs date (?)
    Si ce n'est pas le cas, c.à.d, si ces 3 tables sont "indépendantes" alors la requête finale, effectuant le calcul du bénéfice, doit ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT 
      ( 
    	( SELECT SUM(commandes.total_ttc) 
    	  FROM commandes
    	  WHERE commandes.date LIKE %motcle% ) 	
    	+ 	
    	( SELECT SUM(commandes_ext.total_ttc) 
    	  FROM commandes_ext
      	  WHERE commandes_ext.date LIKE %motcle% ) 
    	- 
    	( SELECT SUM(frais.total_ttc) 
    	   FROM frais
    	   WHERE frais.date LIKE %motcle% ) 
      ) AS benefice_total_ttc
    A+

  4. #4
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Passez par une table des DATE :
    http://sqlpro.developpez.com/cours/gestiontemps/

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2011
    Messages : 48
    Par défaut
    Bonjour,
    Merci pour vos réponses, j'avais déjà essayé la solution de HMIRA, qui me semblait la plus logique mais cela ne fonctionne malheureusement pas.

    Je vous explique en détail la façon dont cette page fonctionne :

    Dans une page de comptabilité de mon site, j'y ai introduit un champ de recherche, de tel façon à ce que quand on y insère une date (2010, 2011, etc...) on y aperçoit toutes les commandes annuelles réalisées sur le site (table:commandes) et en dessous on y voit les commandes réalisées en dehors du site (table:commandes_ext) et encore en dessous les frais généraux (table:frais)

    Un peu plus haut, j'y ai inséré dans un tableau les totaux, dont le bénéfice total du site, qui doit être justement commandes+commandes_ext-frais

    Tout ça est facile à réaliser, mais justement le hic c'est que se total doit être filtré par ce champs de recherche qui me permet d'afficher les commandes, commandes ext et frais par leurs dates, dont la requête LIKE %motcle% et motcle qui fait appel au champs $_POST['nom de mon champs']

    P.S. désolé pour les balises, c'est vrais que j'aurais pu les formatés comme il le faut, je suis débutant sur ce forum (la revoici avec le SUM que j'avais oublié..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT (SUM(commandes.total_ttc)+SUM(commandes_ext.total_ttc))-SUM(frais.total_ttc) AS benefice_total_ttc
    FROM commandes, commandes_ext, frais
    WHERE commandes.date AND commandes_ext.date AND frais.date 
    LIKE %motcle%

  6. #6
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    on y insère une date (2010, 2011
    C'est une année çà?
    Peut-on saisir également les mois etc dans votre champsde recherche?
    Peut'on voir votre modéle de base pour les trois tables concernées?

    Merci pour vos réponses, j'avais déjà essayé la solution de HMIRA, qui me semblait la plus logique mais cela ne fonctionne malheureusement pas.
    Qu'est ce qui ne fonctionne pas? erreur? pas de résultat?

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2011
    Messages : 48
    Par défaut
    oui alors concernant l'année :
    je peux faire une recherche dans le formulaire par année ex : 2011
    par mois ex : 2011-05
    et par jour ex : 2011-05-04

    pour le mauvais fonctionnement, il n'y à pas d'erreur mais simplement une réponse vide.

    et voici une des requête des 3 affichages qui fonctionne, mais c'est juste pour l'affichage et non le calcul des totaux qu'il me faut justement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM frais
    WHERE frais.date LIKE %motcle%
    ORDER BY `date` ASC

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/02/2015, 22h08
  2. Une question pour les RadioButton
    Par jacko842 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/02/2010, 16h24
  3. WPF ou Autre : question pour les pros :)
    Par theMonz31 dans le forum C#
    Réponses: 6
    Dernier message: 31/03/2008, 09h03
  4. Question pour les Pros du Flash !
    Par mansickore dans le forum Flash
    Réponses: 1
    Dernier message: 21/01/2008, 17h40
  5. Réponses: 3
    Dernier message: 14/12/2005, 23h08

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