DEMANDE REQUETE SQL
Fermé
TCHITCHOO
Messages postés
16
Date d'inscription
samedi 18 octobre 2008
Statut
Membre
Dernière intervention
5 février 2011
-
Modifié par TCHITCHOO le 15/06/2010 à 23:53
fiu - 16 juin 2010 à 22:55
fiu - 16 juin 2010 à 22:55
A voir également:
- DEMANDE REQUETE SQL
- Blob sql ✓ - Forum Webmastering
- Récupération serveur sql - Télécharger - Gestion de données
- Requête sql doublons sur 2 champs ✓ - Forum Programmation
- Sql lister les tables ✓ - Forum Programmation
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
8 réponses
Salut,
Donc, la méga requête pour afficher Qté, DESIGNATION (Disque/Abrasif), Observation est
Mais je persiste : tes tables Disque & Abrasif sont une véritable hérésie. Ça frise la faute professionnelle.
Si tu avais une table supplémentaire Famille ou Catégorie qui liste familles ou catégories et des zones supplémentaires dans Article où soient stockées la famille ou catégorie, la désignation et toutes les caractéristiques supportables par tes différentes familles ou catégories (ie la catégorie DISQUE a 8 attributs numériques alors qu'Abrasif en a 12, ça te donne 12 attributs numériques dans Article), la requête est alors
Donc, la méga requête pour afficher Qté, DESIGNATION (Disque/Abrasif), Observation est
SELECT qte , '(' || CASE WHEN dd.designation IS NULL THEN '' ELSE dd.designation END || CASE WHEN aa.designation IS NULL THEN '' ELSE aa.designation END || ')' desig , observation FROM [Bon de Reception] br, [Ligne Reception] lr, article a LEFT OUTER JOIN disque dd on lr.ref = dd.ref LEFT OUTER JOIN abrasif aa on lr.ref = aa.ref WHERE br.[N° RECEPT] = lr.[N° RECEPT] AND lr.ref = a.ref;Il te reste alors à ajouter un AND pour filtrer sur la date ou des numéros et tu auras ta liste.
Mais je persiste : tes tables Disque & Abrasif sont une véritable hérésie. Ça frise la faute professionnelle.
Si tu avais une table supplémentaire Famille ou Catégorie qui liste familles ou catégories et des zones supplémentaires dans Article où soient stockées la famille ou catégorie, la désignation et toutes les caractéristiques supportables par tes différentes familles ou catégories (ie la catégorie DISQUE a 8 attributs numériques alors qu'Abrasif en a 12, ça te donne 12 attributs numériques dans Article), la requête est alors
SELECT qte, designation, observation FROM [Bon de Reception] br, [Ligne Reception] lr, article a WHERE br.[N° RECEPT] = lr.[N° RECEPT] AND lr.ref = a.ref;
Salut,
Avant de formuler une réponse, il faut préciser
1. comment faire le lien entre [N° LIG RECPT] & [N° RECEPT]
2. à quoi servent les tables Disque & Abrasif ?
Avant de formuler une réponse, il faut préciser
1. comment faire le lien entre [N° LIG RECPT] & [N° RECEPT]
2. à quoi servent les tables Disque & Abrasif ?
TCHITCHOO
Messages postés
16
Date d'inscription
samedi 18 octobre 2008
Statut
Membre
Dernière intervention
5 février 2011
14 juin 2010 à 01:17
14 juin 2010 à 01:17
1. Un Bon de réception contient juste Le N° et la date de réception du stock, mais les autres informations (càd la Qté et la désignation des articles) doivent être mentionnées dans une ou plusieurs Ligne réception.
2. Les tables "Disque" & "Abrasif" sont deux types différents d'article. (notion d'héritage)
je pense que tout est clair maintenant, et à vous de jouer !!!
2. Les tables "Disque" & "Abrasif" sont deux types différents d'article. (notion d'héritage)
je pense que tout est clair maintenant, et à vous de jouer !!!
HostOfSeraphim
Messages postés
6750
Date d'inscription
jeudi 2 février 2006
Statut
Contributeur
Dernière intervention
31 juillet 2016
1 607
14 juin 2010 à 01:23
14 juin 2010 à 01:23
Dans ce cas, comment savoir à quel bon de commande appartiennent les lignes réception ? Il ne manquerait pas une clé étrangère dans la table "ligne réception" pour faire le lien avec les bons de commande ?
TCHITCHOO
Messages postés
16
Date d'inscription
samedi 18 octobre 2008
Statut
Membre
Dernière intervention
5 février 2011
14 juin 2010 à 14:53
14 juin 2010 à 14:53
T'as raison mais l'application ne permet pas de gérer les bons de commande envoyés, je gère que les Bons de commande reçus par les clients et les bons de Réception et Sortie de stock. Donc j'ai pas de relation entre le bon de commande et le bon de Réception.
Salut,
J'ai quand même un peu peur de t'aiguiller sur une mauvaise voie. As-tu aussi prévu une table Lubrifiant ? et une table Mèche ? et une table Visserie ? et une table Joint ? et une table...
Avoue que ce serait dommage que l'on t'indique quelque chose et que ce ça s'envoie en l'air à cause d'une table que l'on ajoute
J'ai quand même un peu peur de t'aiguiller sur une mauvaise voie. As-tu aussi prévu une table Lubrifiant ? et une table Mèche ? et une table Visserie ? et une table Joint ? et une table...
Avoue que ce serait dommage que l'on t'indique quelque chose et que ce ça s'envoie en l'air à cause d'une table que l'on ajoute
TCHITCHOO
Messages postés
16
Date d'inscription
samedi 18 octobre 2008
Statut
Membre
Dernière intervention
5 février 2011
14 juin 2010 à 14:59
14 juin 2010 à 14:59
Salut,
Y'as pas de raison te paniquer, j'ai seulement 4 types d'articles (qui n'ont pas les même caractéristiques) alors je dois les séparer en 4 tables et qui héritent de la table "Article".Pense-tu que c'est faux de raisonner comme ça ?
Y'as pas de raison te paniquer, j'ai seulement 4 types d'articles (qui n'ont pas les même caractéristiques) alors je dois les séparer en 4 tables et qui héritent de la table "Article".Pense-tu que c'est faux de raisonner comme ça ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Un jour, la société va s'agrandir. Et agrandira sa gamme au passage.
Comment le logiciel va-t-il digérer cette évolution ?
Traditionnellement, on se contente d'ajouter des attributs optionnels dans Article, voire de prévoir des attributs inutilisés aujourd'hui qui le seront plus tard. L'évolution ci-dessus passe alors par l'utilisation de ces attributs sur-numéraires, sans réécriture de code.
Un jour, la société va s'agrandir. Et agrandira sa gamme au passage.
Comment le logiciel va-t-il digérer cette évolution ?
Traditionnellement, on se contente d'ajouter des attributs optionnels dans Article, voire de prévoir des attributs inutilisés aujourd'hui qui le seront plus tard. L'évolution ci-dessus passe alors par l'utilisation de ces attributs sur-numéraires, sans réécriture de code.
TCHITCHOO
Messages postés
16
Date d'inscription
samedi 18 octobre 2008
Statut
Membre
Dernière intervention
5 février 2011
15 juin 2010 à 13:54
15 juin 2010 à 13:54
Salut,
Je te remercie pour tes conseils, mais l'essentiel n'était pas fait jusqu'à maintenant, j'ai encore besoin de la requête SQL demandée si-dessus... tu peux m'aider ou non ?
Je te remercie pour tes conseils, mais l'essentiel n'était pas fait jusqu'à maintenant, j'ai encore besoin de la requête SQL demandée si-dessus... tu peux m'aider ou non ?
Salut,
C'était une réponse à la question "Pense-tu que c'est faux de raisonner comme ça ?"
Quel que soit le schéma retenu, il faut de toute façon pouvoir établir un lien entre un bon de réception et une ligne d'un bon de réception : si je prends une ligne au hasard dans ta table Ligne de réception, comment faire pour trouver le bon de réception auquel la ligne est rattachée ?
C'était une réponse à la question "Pense-tu que c'est faux de raisonner comme ça ?"
Quel que soit le schéma retenu, il faut de toute façon pouvoir établir un lien entre un bon de réception et une ligne d'un bon de réception : si je prends une ligne au hasard dans ta table Ligne de réception, comment faire pour trouver le bon de réception auquel la ligne est rattachée ?
TCHITCHOO
Messages postés
16
Date d'inscription
samedi 18 octobre 2008
Statut
Membre
Dernière intervention
5 février 2011
15 juin 2010 à 23:50
15 juin 2010 à 23:50
salut,
T'as raison, j'ai oublié de mettre une clé étrangère "N° RECEPT" dans la table "Ligne Reception" dans mon sujet sur ce forum, mais crois moi j'ai pas commis cette erreur dans ma base ;)
T'as raison, j'ai oublié de mettre une clé étrangère "N° RECEPT" dans la table "Ligne Reception" dans mon sujet sur ce forum, mais crois moi j'ai pas commis cette erreur dans ma base ;)
HostOfSeraphim
Messages postés
6750
Date d'inscription
jeudi 2 février 2006
Statut
Contributeur
Dernière intervention
31 juillet 2016
1 607
15 juin 2010 à 23:38
15 juin 2010 à 23:38
Je "plussoie" les commentaires faits plus haut : une requête SQL ne peut fonctionner que si l'analyse faite autour de la problématique est correcte. Les deux sont liés. Il faut donc commencer par la vérification de l'analyse, pour éviter d'avoir tout simplement de faux résultats dans les requêtes SQL.
Salut,
peut-être faut-il isoler les prédicats des join avec des parenthèses ?
en fait, je travaille majoritairement avec DB2 qui est suffisamment intelligent pour ne pas avoir besoin de parenthèses et avec oracle ou j'utilise une syntaxe non standard mais bien plus simple.
Et là, honnêtement, je vois pas pourquoi tu te prends cette erreur !
peut-être faut-il isoler les prédicats des join avec des parenthèses ?
SELECT qte , '(' || CASE WHEN dd.designation IS NULL THEN '' ELSE dd.designation END || CASE WHEN aa.designation IS NULL THEN '' ELSE aa.designation END || ')' desig , observation FROM [Bon de Reception] br, [Ligne Reception] lr, article a LEFT OUTER JOIN disque dd on (lr.ref = dd.ref) LEFT OUTER JOIN abrasif aa on (lr.ref = aa.ref) WHERE br.[N° RECEPT] = lr.[N° RECEPT] AND lr.ref = a.ref;
en fait, je travaille majoritairement avec DB2 qui est suffisamment intelligent pour ne pas avoir besoin de parenthèses et avec oracle ou j'utilise une syntaxe non standard mais bien plus simple.
Et là, honnêtement, je vois pas pourquoi tu te prends cette erreur !
16 juin 2010 à 14:42
Tout d'abord je te remercie pour les réponses à mes questions et pour ton effort, et après la saisie de la 1ère requête le compilateur a détecté cette erreur:
"L'identificateur en plusieurs parties "lr.ref" ne peut pas être lié."
au niveau du:
LEFT OUTER JOIN disque dd on lr.ref = dd.ref
LEFT OUTER JOIN abrasif aa on lr.ref = aa.ref
A ton avis, quelle est l'origine de cette erreur ?
Merci d'avance.