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 :

Créer une sous-requête


Sujet :

Langage SQL

  1. #21
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Merci à tous pour votre aide!!

    Tout est réglé

  2. #22
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Je suis désolée mais mon problème n'est en fait pas résolu.
    Le dernier ccode de StringBuilder fonctionne correctement (mise à part le fait qu'il me sortait des doublons) mais je ne dois finalement pas utiliser les dates L et C de la table_prix mais d'une 3ème table encore !!

    Si je récapitule, j'ai maintenant 3 tables :
    TABLE_ARTICLE : Avec les colonnes Code_article et Libelle_article
    TABLE_PRIX: Code_article; Prix_PUG; PriX_PR
    TABLE_DATE: Code_article; Date_C et Date_Prev

    Je souhaiterai avoir pour chaque code article son prix PR en date_C et en date_PREV et son prix PUG en fdate_C et en date_Prev.

    Mes colonnes doivent être :

    CODE ARTICLE | LIBELLE | DATE_C | DATE_PREV| PUG Date C | PUG Date Prev | PR Date C | PR Date Prev

    Merci par avance pour votre aide

  3. #23
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Voici le code auquel j'ai pensé mais qui 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    SELECT
    '730' AS "Code entrepot";
    TABLE_ARTICLE.CODE_ARTICLE;
    TABLE_ARTICLE.LIBELLE;
    TABLE_DATE.DATE_C;
    TABLE_DATE.DATE_PREV;
    TABLE_CMD.PUG AS "PUG Date C";
    TABLE_PREV.PUG AS"PUG Date Prev";
    TABLE_CMD.PR AS "PR Date C";
    TABLE_PREV.PR AS "PR date Prev";
     
    FROM
    (
    SELECT
    TABLE_PRIX.CODE_ARTICLE;
    TABLE_PRIX.EMBALLAGE;
    TABLE_PRIX.PUG;
    TABLE_PRIX.PR
    FROM
    EURPRD1.FIC730.TABLE_PRIX TABLE_PRIX
    WHERE
    TABLE_PRIX.CODE_ARTICLE = TABLE_DATE.CODE_ARTICLE
    AND
    (TABLE_DATE.DATE_C = &DATE_C)
    GROUP BY
    TABLE_PRIX.CODE_ARTICLE
    )
    TABLE_CMD
     
    LEFT OUTER JOIN
    (
    SELECT
    TABLE_PRIX.CODE_ARTICLE;
    TABLE_PRIX.EMBALLAGE;
    TABLE_PRIX.PUG;
    TABLE_PRIX.PR
    FROM
    EURPRD1.FIC730.TABLE_PRIX TABLE_PRIX
    WHERE
    TABLE_PRIX.CODE_ARTICLE = TABLE_DATE.CODE_ARTICLE
    AND
    (TABLE_DATE.DATE_PREV = &DATE_PREV)
    GROUP BY
    TABLE_PRIX.CODE_ARTICLE
    )
    TABLE_PREV
     
    ON
    TABLE_CMD.CODE_ARTICLE = TABLE_PREV.CODE_ARTICLE 
    AND
    TABLE_CMD.EMBALLAGE = TABLE_PREV.EMBALLAGE

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

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    Qu'est-ce que tu entends par "ça ne fonctionne pas" ? Pas de résultat, pas le bon résultat (mais encore ?), message d'erreur (lequel ?)...
    Quoi qu'il en soit, il y a à redire sur cette requête, par exemple l'utilisation de GROUP BY sans fonction d'agrégation... et j'ai du mal à voir l'utilité ici des sous-requêtes.

    Tatayo.

  5. #25
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    et on ne parle pas de la présence de ; à la fin de chaque colonne sélectionnée, et qu'en est il des jointures où on ne parle de norme... Il n'y a même pas les tables correspondantes dans la clause FROM
    ....
    FROM
    EURPRD1.FIC730.TABLE_PRIX TABLE_PRIX
    WHERE
    TABLE_PRIX.CODE_ARTICLE = TABLE_DATE.CODE_ARTICLE
    .....
    En tout cas, j’arrête de répondre à cette discussion où les éléments arrivent au goutte à goutte

    Tout devrait être remis à zéro y compris la structure des tables....
    Merci d'ajouter un sur les tags qui vous ont aidé

  6. #26
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Je suis toujours autant perdu avec cette requête qui me sort (quand elle veut bien se lancer des résultats incohérents).

    PS: le point virgule est du à mon sgbd qui est apparemment assez obsolète.

    Après une multitude d'essais... j'ai ENFIN récupéré les bonnes tables.
    Mon but étant d'évaluer des écarts de prix entre la date de J+1 et la date de J+2. C'est à dire qu'un prix PR à J+1 peut ne paxs être le même que J+2 (parfois celà est du a une erreur de frappe ex : au lieu de 0,22€ la personne saisie 22€). C'est cet écart la que je veux étudier.

    Voici les tables dont je dispose (que je lie toutes grace au code article présent dans toutes les tables); j'ai d'autres champs mais qui ne me posent pas problème:

    Table_prix :
    Code_article
    Prix_PUG
    Prix_PR

    Table_date:
    Code_article
    Date

    Dans mon select voici mes champs :

    Table_prix.code_article
    prix_pug
    prix_pug1
    prix_pr
    prix_pr1
    date
    date1


    Ce que je voudrais :
    Lier pug à date et pr à date
    Lier pug1 à date1 et pr1 à date1

    Au lancement de la requête 2 dates seront à saisir.

    Voici mon code qui ne fait aucun lie entre les prix et dates :


    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 
    	code_article;
    	PUG;
    	PUG_1;
    	PR;
    	PR_1;
    	DATE;
    	DATE_1 
    FROM 
    	EURPRD1.FIC730.table_prix table_prix;  
    	EURPRD1.FIC730.table_date table_date
    WHERE 
    	table_prix.code_article= table_date.code_article
    	AND(DATE = &DATE
    	AND DATE = &DATE_1)

    MERCI par avance pour votre aide je bloque depuis une semaine sur ce sujet qui je suis sure n'est absolument pas compliqué... mais je ne maitrise pas les jointures et les sous requêtes. Si ce n'est pas clair svp faites moi le savoir merci

  7. #27
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2012
    Messages : 28
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    Pourriez-vous fournir un jeu d'exemples?
    Avec ce que vous avez dans vos tables en entrée et ce que vous souhaitez avoir comme résultat.
    Ce sera bien plus simple de vous répondre après cela.

  8. #28
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Voici le fichier de résultats souhaité :

    merci
    Fichiers attachés Fichiers attachés

  9. #29
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    Avec ces tables (qui ne correspondent d'ailleurs pas à celles des messages précédents), je ne vois pas comment on peut avoir un prix à une date donnée.
    On a une table avec un code article et une date, et une table avec un code article et des prix. Donc le seul lien entre les deux tables est le code article.
    Mais comment savoir à quelle date se réfère un prix ?
    Bref je pense qu'il ne s'agit pas de la vrai description des tables, mais uniquement des colonnes que tu penses êtres utiles ici.

    Donc si tu veux une aide efficace, il nous faut:
    Le SGBD concerné
    La description réelle des tables (y compris les colonnes qui te semblent inutiles)
    Un jeu de données, et le résultat correspondant

    Et le tout dans un seul message...

    Tatayo.

  10. #30
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    J'utilise showcase pour mes requêtes.
    Le problème est que le nom des tables et colonnes sont très barbares. Poiur plus de simplicité je n'ai mis que l'essentiel.
    Il y'a aussi le code emballage je lis donc ces 2 tables par code article + code emballage.


    Ce que je pensais faire c'est : créer une sous table nommée prix_1 par exemple dans laquelle il yaurait:
    table_prix.code_article
    table_prix.PUG
    table_prix.PR
    DATE

    Et une autre sous table nommée prix_2 avec :
    table_prix.code_article
    table_prix.PUG1
    table_prix.PR1
    DATE1

    Est-ce possible ?

  11. #31
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Oui. Ou non.
    C'est la seule réponse possible avec les éléments que tu nous donnes.

    Tatayo.

  12. #32
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Avez-vous vu le fichier que j'ai mis à disposition ?
    Il s'agit du résultat de la requête que vous m'avez aidé à construire la semaine dernière. Mais la date que je voulais utiliser était présente dans la même table que les prix ce qui posait moins de problèmes.

    Je souhaiterai le même résultat mais avec cette date qui est dans une autre table.
    Dans la table où il y a la date il y'a le code article le code emballage le prix PR mais pas le prix PUG !!! Voilà pourquoi je dois utiliser l'autre table ou les 2 prix y sont présents.

    Est-ce plus clair ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/07/2019, 10h42
  2. Créer une sous requête dans Web-i RC
    Par ruru9 dans le forum Webi
    Réponses: 2
    Dernier message: 19/07/2013, 16h56
  3. Comment créer une sous requête sur plusieurs champs?
    Par Anonymouse dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/06/2008, 10h13
  4. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 08h54
  5. Réponses: 3
    Dernier message: 18/05/2003, 01h16

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