Accueil > Forum > > > > Requête de débutant...
Requête de débutant...
lundi 4 mai 2009 à 13:05:45 |
Requête de débutant...

HWO
|
Bonjour, Je viens d'installer SQL SERVEUR 2008 EXPRESS + sqlManagement studio et je bloque sur l'écriture de la première requête. J'ai créé un petite base qui dipose de 2 tables, 1 "fournisseurs" et une autre "produits". Dans la table produit il y a 2 colonnes "fournisseur_1" et "fournisseurs_2" + d'autre. Le nom du fournisseur se trouve dans la table "founisseur". La requéte suivante me donne bien le nom des fournisseur_1 SELECT dbo.Fournisseurs.SocieteNom AS F_1, dbo.Produits.Reference FROM dbo.Fournisseurs INNER JOIN dbo.Produits ON dbo.Fournisseurs.FournisseurID = dbo.Produits.Fournisseur_1 Par contre je n'arrive pas écrire la requéte que me donnerai comme résultat 3 colonnes à savoir la ref le nom de fournisseur_1 et le nom du fournisseur_2 s'il existe..... PAr avance merci de votre aide.
|
|
lundi 4 mai 2009 à 17:56:37 |
Re : Requête de débutant...

MoH008
|
Salut, j'ai une petite question à te poser : est ce vraiment utile à ce moment de savoir si il y a un second fournisseur ?
Je veux dire tu peux faire : SELECT dbo.Fournisseurs.SocieteNom1 AS F_1, dbo.Fournisseurs.SocieteNom2 AS F_2, dbo.Produits.Reference FROM dbo.Fournisseurs INNER JOIN dbo.Produits ON dbo.Fournisseurs.FournisseurID = dbo.Produits.Fournisseur_1
et par la suite vérifier si la colonne F_2 est vide ou pas,non?
The possible meet the impossible to become the possimpible !!
|
|
mardi 5 mai 2009 à 10:07:19 |
Re : Requête de débutant...

HWO
|
Merci de ton aide, La requete que tu me donne ne retourne pas le résultat. Je cherche à avoir un tableau qui me donne pour tous les produits la liste des fournisseurs, dans la colonne fournisseur_1 je veux le nom du fournisseur alors que dans la table produits je trouve l'ID du fournisseur, et la même chose dans la colonne fournisseur_2. Je suis vraiment débutant en SQL (depuis hier) c'est ma première requête, peut-être est ce impossible ? Vaut-il passer par une vue intermédiare dans laquelle on retrouverai la liste des fournisseurs2 ? Peut-on dans une même requete pointer deux fois sur une même colonne d'une jointure ?
|
|
mardi 5 mai 2009 à 14:57:16 |
Re : Requête de débutant...

MoH008
|
Réponse acceptée !
Salut, As tu adapté ma requête parce que telle quelle, c'est sûr qu'elle ne fonctionnera pas ?!
étant donné que tu es débutant, te serait-il possible de me fournir le schéma relationnel pour fournisseur et produit au moins? (ex : nom_table(champ1, champ2....)
Il est normal que tu retrouves l'id du fournisseur dans ta table produit, il s'agit de la clef primaire (grâce à une clef primaire tu détermines une et une seule occurence de la table) de la table fournisseur.
Pas besoin de trop te compliqué la vie, une requête suffit à ce que tu veux faire !
The possible meet the impossible to become the possimpible !!
|
|
mardi 5 mai 2009 à 15:01:30 |
Re : Requête de débutant...

aieeeuuuuu
|
Réponse acceptée !
Bonjour
Tout d'abord, il y a quelques problems au niveau conceptuel dans la structure de base : mettre deux champs poru les fournisseurs n'est pas une bonne idee, i leut fallu trois tables : Fournisseurs (IDFournisseur, Nom, Raisonsociale,...), une table produits (IDProduit, nom, description,...) et une table Fournisseurs_produit (IDFournisseur, IDProduit)
mais je pense que le but de votre base est plutot de "prendre en main" le SQL.
pour votre probleme, il doit pouvoir se resoudre comme ceci : SELECT produit.Reference, F1.Nom, F2.Nom FROM Produit INNER JOIN Fournisseur F1 ON (Produit.Fournisseur_1 = F1.FournisseurID) LEFT OUTER JOIN Fournisseur F2 ON (Produit.Fournisseur_2 = F2.FournisseurID)
Ca devrait faire l'affaire. si le resultat n'est pas celui attendu, précisez le resultat obtenu, et celui désiré afin qu'on y voit plus clair.
|
|
mardi 5 mai 2009 à 15:34:21 |
Re : Requête de débutant...

HWO
|
Merci beaucoup à vous deux, si j'ai bien compris un alias de table (ici F1 et F2) ne peut être utilisé qu'une seule fois dans une requête ? Il subsiste encore une part d'ombre dans ma tête, pour quoi un INNER JOIN à la place du LEFT OUTER JOIN ne donne pas le même résultat vu qu'a priori on travaille sur deux objets distincts F1 ET F2 ? J'avance, j'avance je vois de la lumière....
|
|
mardi 5 mai 2009 à 16:24:51 |
Re : Requête de débutant...

aieeeuuuuu
|
Réponse acceptée !
re,
non, en fait tu peux utiliser les alias autant de fois que tu veux. pour tes fournisseurs, si tu veux recuperer leur nom et leur adresse par exemple, tu pourra faire F1.nom, F1.adresse, F2.nom, F2.adresse.
en fait ce que je fais dans la requete, c'est que j'apelle DEUX FOIS la meme table, c'est pourquoi j'utilise des alias, pour différencier Je fais d'abord une jointure de la table fournisseur sur le champs fournisseur_1 de la table Produit, pour avoir le nom du fournisseur précisé dans la colonne fournisseur_1 de chaque produit Ensuite je fais une jointure sur la colonne fournisseur_2,...
pour ce qui est du LEFT OUTER JOIN, pour la deuxieme jointure, ca permet d'afficher quand meme les resultat de la premiere jointure, meme si il n'y a pas de correspondance pour la deuxieme jointure (en gros, c apermet d'afficher quand meme les produits qui n'ont pas de fournisseur2)
(en fait pour mieux comprendre la requete, tu pourrais considerer que les fournisseur dont l'ID est dans la colonne fournisseur1 de la table produit sont contenus dans une table qui s'apelle F1, et que les fournisseur contenus dans la colonne Fournisseur2 sont contenus dans une autre table qui s'apelle F2, sauf que dans ton cas, tous les fournisseurs sont contenus dans la meme table, que l'on apelle donc deux fois)
|
|
mardi 5 mai 2009 à 16:50:49 |
Re : Requête de débutant...

HWO
|
Bon, d'accord mais alors, pourquoi la requete suivante est erronnée : SELECT dbo.Produits.Reference, F1.SocieteNom as Fournissuer_principal, F1.SocieteNom AS Fournisseur_Autre FROM dbo.Produits INNER JOIN dbo.Fournisseurs AS F1 ON dbo.Produits.Fournisseur_1 = F1.FournisseurID LEFT OUTER JOIN ON dbo.Produits.Fournisseur_2 = F1.FournisseurID Je pense que c'est parce que j'utilise deux fois F1.SocieteNom dans le select n'est ce pas ? Si c'est le cas, je me suis mal exprimé dans le post précédent, et je voulais dire que l'on ne peut pas utiliser deux fois la même "colonne" d'un alias dans une même requête.
|
|
mardi 5 mai 2009 à 18:46:21 |
Re : Requête de débutant...

aieeeuuuuu
|
La requete ne fonctionne pas car il manque le nom de table pour la deuxieme jointure.
pour ce qui est d'utiliser deux fois la meme colonne, rien ne t'en empeche, mais il n'y a aucun interet, car ca te retournera deux fois la meme chose !!!!!
Le probleme ici c'est que tu as pour UN produit, DEUX Id de fournisseurs rattachés. il faut donc que tu aille chercher une fois le nom du fournisseur 1, puis le fournisseur 2, il te faut donc deux jointures. tu pourrais recuperer simplement tes informations avec une seule jointure, mais le resultat serait sur deux ligne, et non une seule : PRODUIT1;FOURNISSEUR1 PRODUIT1;FOURNISSEUR2
|
|
Cette discussion est classée dans : requête, fournisseur, produits, fournisseurs, dbo
Répondre à ce message
Sujets en rapport avec ce message
Dans une requête, ajouter un champ "ordre" qui s'incrémente [ par GAMBERGE ]
Bonjour, Je cherche à écrire une requête SQL Access issue d'une table COMMANDES permettant d'ajouter un champ "Ordre" qui s'incrémente pour chaque fou
Requête FTS sur vue. [ par gillou1664 ]
Bonjour tout le monde.Bon, je suis pas très bon en SQL et j'ai un petit soucis (enfin gros :p) : J'essaie d'utiliser une fonction de recherche de text
requete sql [ par fraiza ]
slt,j'ai besoin d'une requête qui donne les interventions qui ont le même code employé et qui ont la même date.sachant que ces champs se trouvent dans
Lier un classeur Excel à une requête Bo Xi [ par marie_2580 ]
Bonjour, Je commence juste à travailler sous BO Xi et je dois réaliser une requête à partir d'un univers Bo gérant une liste de client. Je souhaite r
Requête apparement pas facile... [ par conan76 ]
Bonjour,Je tente depuis hier de faire une requête SQL un peu particulière et qui ne semble pas évidente. Alors je vais tenter de vous expliquer ce que
Requête select une ligne sur deux [ par Mayzz ]
Bonjour à tous,Voila, je fais un site en ASP.NET et j'ai une requête spécifique à faire.Je souhaiterai faire une requête select dans un dataset (Table
Problème d'alias sur table dérivée (sous-requête) [ par dthuler ]
Bonjour,J'ai un gros problème que je n'arrive pas à isoler dans une requête MySQL;La requête suivante me donne l'erreur "Every derived table must have
demande de l'aide sur une requete ! [ par tahtouh ]
Bonjours , j'arrive pas a trouver une requete sql qui peu me servire sur ce cas :j ai deux table transaction et client je veux avoir la somm
Requête table intermédiaire (AND) [ par ikan66 ]
Bonjour à tous,Je souhaite écrire une requête permettant d'interroger une table intermédiaire comprenant les champs : journal_id et domaines_id. Table
Requête dans Visual Studio 2008 à partir d'une BDD Access 2007 [ par LordKelvin ]
Bonjour, J'ai connecté, dans Visual Studio 2008, une BDD Access 2007, et déjà première chose qui me chiffonne : les requêtes créées sous Access appar
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
PROCEDURE MYSQLPROCEDURE MYSQL par gearmat
Cliquez pour lire la suite par gearmat
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|