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
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|