Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/08/2011, 11h13   #1
Invité de passage
 
Inscription : mai 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 12
Points : 4
Points : 4
Par défaut requête SQL

Bonjour à tous,

J'aurais besoin de votre aide pour effectuer une requête sql:
Code :
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
nils56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 12h00   #2
Membre Expert
 
Avatar de Atomya Rise
 
Femme Emilie Lefol
En recherche d'emploi
Inscription : février 2009
Messages : 411
Détails du profil
Informations personnelles :
Nom : Femme Emilie Lefol
Âge : 26
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : En recherche d'emploi
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2009
Messages : 411
Points : 1 277
Points : 1 277
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 :
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'
__________________

Si un message vous a aidé, pensez à voter positivement pour lui ! Merci
Pas de question technique en privé
- Si on criait sur la place publique les fautes de tout le monde, on ne pourrait plus fréquenter personne ! (Marcel Pagnol)
- Technocrates, c’est les mecs que, quand tu leur poses une question, une fois qu’ils ont fini de répondre, tu comprends plus la question que t’as posée. (Coluche)
Atomya Rise est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/08/2011, 12h09   #3
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
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 :
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
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 12h11   #4
Invité de passage
 
Inscription : mai 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 12
Points : 4
Points : 4
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
nils56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 12h15   #5
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
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.
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 12h17   #6
Membre Expert
 
Avatar de Atomya Rise
 
Femme Emilie Lefol
En recherche d'emploi
Inscription : février 2009
Messages : 411
Détails du profil
Informations personnelles :
Nom : Femme Emilie Lefol
Âge : 26
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : En recherche d'emploi
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2009
Messages : 411
Points : 1 277
Points : 1 277
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.
__________________

Si un message vous a aidé, pensez à voter positivement pour lui ! Merci
Pas de question technique en privé
- Si on criait sur la place publique les fautes de tout le monde, on ne pourrait plus fréquenter personne ! (Marcel Pagnol)
- Technocrates, c’est les mecs que, quand tu leur poses une question, une fois qu’ils ont fini de répondre, tu comprends plus la question que t’as posée. (Coluche)
Atomya Rise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 12h20   #7
Membre Expert
 
Avatar de Atomya Rise
 
Femme Emilie Lefol
En recherche d'emploi
Inscription : février 2009
Messages : 411
Détails du profil
Informations personnelles :
Nom : Femme Emilie Lefol
Âge : 26
Localisation : France, Somme (Picardie)

Informations professionnelles :
Activité : En recherche d'emploi
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2009
Messages : 411
Points : 1 277
Points : 1 277
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
__________________

Si un message vous a aidé, pensez à voter positivement pour lui ! Merci
Pas de question technique en privé
- Si on criait sur la place publique les fautes de tout le monde, on ne pourrait plus fréquenter personne ! (Marcel Pagnol)
- Technocrates, c’est les mecs que, quand tu leur poses une question, une fois qu’ils ont fini de répondre, tu comprends plus la question que t’as posée. (Coluche)
Atomya Rise est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 12h24   #8
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
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
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 23/08/2011, 09h31   #9
Invité de passage
 
Inscription : mai 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 12
Points : 4
Points : 4
Bonjour à tous et merci

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

Code :
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
nils56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h19.


 
 
 
 
Partenaires

Hébergement Web