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 :

Restriction sur plusieurs valeurs


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut Restriction sur plusieurs valeurs
    bonjour,

    j'utilise cette requete au boulot pour tirer les chiffres. Je n'y connais rien en sql et je voudrais la modifier un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT DISTINCT histo_ventes.cdpdt, SUM(histo_ventes.qtevendu) AS Somme, libpdt 
     
    FROM histo_ventes
     
    INNER JOIN produit ON histo_ventes.cdpdt = produit.cdpdt
     
    WHERE dtvaleur BETWEEN '2010-12-01' AND '2010-12-03'
     
    WHERE produit.cdfam BETWEEN '255' 
     
    AND cdsite = 'LPA'
     
    GROUP BY libpdt, histo_ventes.cdpdt
     
    ORDER BY Somme DESC
    en gros, je voudrais pouvoir tirer avec la meme requete plusieurs code famille (produit.cdfapm). La je peu tirer que la 255. comment faire pour tirer par exemple la 255, la 231 et la 273 ??

    Par avance merci pour votre aide.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    produit.cdfam in (255,231,273)

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    DISTINCT + GROUP BY, on moins on est sûr que tu veux des valeurs distinctes avec ça !
    => Retire le DISTINCT inutile.

    Il y a deux WHERE dans ta requête. Ça m'étonnerait qu'elle fonctionne en l'état !

    Ce serait bien de préfixer toutes les colonnes utilisées, et de préférence avec un alias court, parce que les colonnes libpdt, dtvaleur et cdsite, on ne sait pas de quelle table elles viennent.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut
    Je viens de tester avec la modification mais la requete ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT DISTINCT histo_ventes.cdpdt, SUM(histo_ventes.qtevendu) AS Somme, libpdt 
     
    FROM histo_ventes
     
    INNER JOIN produit ON histo_ventes.cdpdt = produit.cdpdt
     
    WHERE dtvaleur BETWEEN '2010-12-01' AND '2010-12-03'
     
    WHERE produit.cdfam IN (255,231,273)
     
    AND cdsite = 'LPA'
     
    GROUP BY libpdt, histo_ventes.cdpdt
     
    ORDER BY Somme DESC
    ca me met ca comme reponse :

    Server 'xx4', Line 1:
    Implicit conversion from datatype 'VARCHAR' to 'INT' is not allowed. Use the CONVERT function to run this query.
    Server Message: Number 257, Severity 16
    Server 'xx4', Line 1:
    Implicit conversion from datatype 'VARCHAR' to 'INT' is not allowed. Use the CONVERT function to run this query.

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Citation Envoyé par CinePhil Voir le message
    Il y a deux WHERE dans ta requête. Ça m'étonnerait qu'elle fonctionne en l'état !
    Ce serait bien de lire quand les gens vous répondent

    Auriez vous la DLL de création de la table ?

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Par défaut
    J'avais bien lu merci

    La requête initiqle fonctionne très bien avec les 2 WHERE ...

    Pour le reste je n'ai rien d'autre, je n'ai pas acces aux bases de données ou autres, j'utilise juste cette requete regulierement pour tirer mes ventes par codes familles.

    Mais je dois la lancer pour chaque familles. Comme j)en ai 300, je voulais tout regrouper en une (ou plusieurs) fois.

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Si produit.cdfam est un varchar, il faut mettre les nombre entre quote :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    produit.cdfam IN ('255','231','273')
    Par contre c'est très étrange que la requête initiale fonctionne correctement.

Discussions similaires

  1. Update sur plusieurs valeurs
    Par stratocasters dans le forum MySQL
    Réponses: 3
    Dernier message: 03/02/2009, 11h55
  2. [WD7.5] filtre sur plusieurs valeurs
    Par paupiau dans le forum WinDev
    Réponses: 7
    Dernier message: 20/06/2008, 15h12
  3. Switch sur plusieurs valeurs
    Par z.e.k dans le forum C++
    Réponses: 5
    Dernier message: 11/02/2007, 23h13
  4. [HashMap] Tri sur plusieurs valeurs
    Par cosmos38240 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 03/01/2006, 14h14
  5. Condition IF sur plusieurs valeurs
    Par davelop dans le forum ASP
    Réponses: 5
    Dernier message: 10/06/2005, 11h10

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