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

 MySQL Discussion :

requête SQL


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Par défaut requête SQL
    Bonjour à tous,

    J'aurais besoin de votre aide pour effectuer une requête sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT ims_stock_group_mapping.stock_no, ims_stock_group_mapping.variant_no, ml_item_hdr.box, ml_item_hdr.guarentee, ml_item_hdr.certificate, ml_item_hdr.misc1, ml_item_hdr.misc2, ml_item_hdr.misc3, ml_item_hdr.HS_code, ml_item_hdr.life_stages, ml_item_hdr.country_of_orig, ml_item_hdr.CITES_code, ml_item_hdr.cites, ml_item_hdr.item_type
    FROM COMMON.dbo.ims_stock_group_mapping ims_stock_group_mapping, IMSDB.dbo.ml_item_hdr ml_item_hdr
    WHERE (ims_stock_group_mapping.stock_no=ml_item_hdr.item) AND (ims_stock_group_mapping.variant_no=ml_item_hdr.variant
    Mon problème est que si le champ stock_no ainsi que le champ variant ne sont pas dans table ml_item_hdr ils n’apparaitront pas dans le résultat et j'aurais besoin également qu'il apparaisse.

    Pouvez-vous m'aider?
    Merci d'avance
    Nils56

  2. #2
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Bonjour,

    Tout d'abord, merci d'utiliser la balise "code" disponible sur le forum pour afficher ton code, ce sera bien plus clair pour nous.

    Ensuite, tu utilises une techniques qui date d'il y a très longtemps... avant 1992 :$

    Je te conseilles plutôt d'utiliser les jointures, ce sera bien plus facile mais aussi que lorsque tu renommes des champs dans ta requête qu'elles soit plus simplifié (c'est à ceci que cela sert)

    Voici un exemple où je sélectionne tout les champs voulu dont le stock_no est égal à 1 :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT mih.box, mih.guarentee, mih.certificate, mih.misc1, mih.misc2, mih.misc3, mih.HS_code, mih.life_stages, mih.country_of_orig, mih.CITES_code, mih.cites, mih.item_type, isgm.stock_no, isgm.variant_no
    FROM COMMON.dbo.ims_stock_group_mapping isgm
    JOIN IMSDB.dbo.ml_item_hdr mih ON isgm.stock_no = mih.item AND isgm.variant_no = mih.variant
    WHERE isgm.stock_no = '1'

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Par défaut
    Bonjour,

    et merci beaucoup pour votre réponse rapide.

    Le problème est que j'aimerais également avoir les stock_no qui ne se trouvent pas dans la table isgm. Dans la première table, on a stock_no avec les variantes, on a les détails additionnels le problème et certains stock_no n'ont pas de détails additionnels et donc ne se trouvent pas dans le résultats et nous aurions besoin également de ceux-ci.

    Merci
    Nils56

  4. #4
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    N'oubliez pas que nous n'avons pas connaissance de la structure de votre base de données, et que de part ce fait, moi personnellement, je ne comprends pas du tout ce que vous essayez d'expliquer.

    Si je ne comprends pas, c'est que vous nous dites que vous n'avez pas le stock_no, pourtant on le sélectionne bien dans la requête....

    Merci de reformuler votre demande plus clairement s'il vous plaît et pourquoi pas, mettre aussi votre structure de base de données concernant le problème pour plus de compréhension.

  5. #5
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Citation Envoyé par Atomya Rise Voir le message
    Bonjour,

    Tout d'abord, merci d'utiliser la balise "code" disponible sur le forum pour afficher ton code, ce sera bien plus clair pour nous.

    Ensuite, tu utilises une techniques qui date d'il y a très longtemps... avant 1992 :$

    Je te conseilles plutôt d'utiliser les jointures, ce sera bien plus facile mais aussi que lorsque tu renommes des champs dans ta requête qu'elles soit plus simplifié (c'est à ceci que cela sert)
    Je vais encore réagir au sujet de l’écriture des jointures !
    Sa façon d’écrire sa jointure est dite IMPLICITE, elle est présente dans la Grammaire SQL92 (BNF Grammar for ISO/IEC 9075:1992 - Database Language SQL) ce qui en autorise l'utilisation.
    C'est donc bel et bien une jointure.
    De plus, vous ne renommerez pas un champ dans une requête, mais une colonne...
    L'utilisation de la jointure dite explicite, permet de bien différencier les conditions de jointures des clauses de la requête.

  6. #6
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Citation Envoyé par Yanika_bzh Voir le message
    Je vais encore réagir au sujet de l'ecriture des jointures !
    Sa facon d'ecrire sa jointure est dite IMPLICITE, elle est présente dans la Grammaire SQL92 (BNF Grammar for ISO/IEC 9075:1992 - Database Language SQL) ce qui en autorise l'utilisation.
    C'est donc bel et bien une jointure.
    De plus, vous ne renommerez pas un champ dans une requete, mais une colonne...
    L'utilisation de la jointure dite explicite, permet de bien différencier les conditions de jointures des clauses de la requetes.
    On est d'accord, c'est une jointure qu'il utilise, je me suis mal exprimé. Ce que je voulais dire, c'est que c'est du code de "l'ancien temps"...
    Et pour le "champ" en "colonne", encore une fois, vous avez raison, j'ai voulu taper trop vite ! Mais le problème reste le même

  7. #7
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Laissez lui le temps de lire le tuto et d'essayer de faire sa requete avec une jolie jointure externe Cela va surement résoudre son problème

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 12
    Par défaut
    Bonjour à tous et merci

    Voici la requête qui fonctionne très bien maintenant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT stock_no, variant_no, box, guarentee, certificate, misc1, misc2, misc3, HS_code, life_stages, country_of_orig, CITES_code, cites, item_type
    FROM  COMMON.dbo.ims_stock_group_mapping C
    LEFT OUTER JOIN  IMSDB.dbo.ml_item_hdr I
    ON C.stock_no = I.item and C.variant_no = I.variant
    Merci également pour le tuto qui va m'être d'une très grande aide.

    Nils56

  9. #9
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Votre problème est au niveau de la compréhension des jointures ...
    Je vous conseille dans un premier temps d'aller lire ce tutoriel

    Vous y apprendrez que ce que vous essayez de faire est une jointure interne.
    Ce qui implique que des résultats ne sont retournés que si il y a existence stricte de la condition de jointure.

    Votre code (j'ai réécris avec une jointure explicite mais cela reste une jointure interne, cela permet de bien vous montrer les conditions de jointures)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
    	<MesColonnes>
    FROM 
    	COMMON.dbo.ims_stock_group_mapping ims_stock_group_mapping
    INNER JOIN   
    	IMSDB.dbo.ml_item_hdr ml_item_hdr
    ON
    	(ims_stock_group_mapping.stock_no=ml_item_hdr.item AND 	
    	 ims_stock_group_mapping.variant_no=ml_item_hdr.variant)
    ne vous ramènera donc que les lignes communes aux deux tables via la condition de jointure (stock_no = item et variant_no=variant).

    Si vous voulez ramener des résultats, même si les lignes des différentes tables jointes ne sont pas renseignées, il vous faudra utiliser la jointure externe.

    Je vous laisse le soin de potasser le tuto, et de réécrire la requête adéquate.

    Bon courage

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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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