Requête SQL
Résolu/Fermé
Nico0044
-
23 mai 2008 à 11:01
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 - 23 mai 2008 à 12:07
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 - 23 mai 2008 à 12:07
A voir également:
- Requête SQL
- Blob sql ✓ - Forum Webmastering
- Récupération serveur sql - Télécharger - Gestion de données
- Sql lister les tables ✓ - Forum Programmation
- Requête sql doublons sur 2 champs ✓ - Forum Programmation
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
4 réponses
^^
dans ton group by, il faut aussi que tu mettes :
essaye, ca marchera peut être!
^^
dans ton group by, il faut aussi que tu mettes :
MOROUT.Nomopération
essaye, ca marchera peut être!
^^
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
23 mai 2008 à 11:11
23 mai 2008 à 11:11
Trois remarques préliminaires :
1. simplifie ta requête en supprimant les MOROUT. qui ne servent à rien puisque tu ne travailles que sur une table
2. évite les caractères comme '°', 'é'... dans les noms de colonnes sql
3. ton SELECT ne peux pas marcher car il contient des noms de colonnes avec des espaces
Ton pb proprement dit vient de la présence de nomOperation dans la liste des variables sélectées : quelle valeur afficher pour un groupe par numFabrication qui contiendrait plusieurs valeurs de nomOperation ?
Il faut donc retirer nomOperation de cette liste.
1. simplifie ta requête en supprimant les MOROUT. qui ne servent à rien puisque tu ne travailles que sur une table
2. évite les caractères comme '°', 'é'... dans les noms de colonnes sql
3. ton SELECT ne peux pas marcher car il contient des noms de colonnes avec des espaces
SELECT max( numPoste ), numFabrication, nomOperation FROM MOROUT GROUP numFabrication
Ton pb proprement dit vient de la présence de nomOperation dans la liste des variables sélectées : quelle valeur afficher pour un groupe par numFabrication qui contiendrait plusieurs valeurs de nomOperation ?
Il faut donc retirer nomOperation de cette liste.
Merci pour vos réponses: pour le fait que je n'ai pas "group by nom opération" c'est justement la le problème j'aimerais l'enlever du group by mais Microsoft query le rajoute tout seul ce qui me donne une requête fausse.
Croy il me faut la liste des nom d'opérations car ce que je veux c'est savoir la dernière opération réalisée par N° de fabrication et on le sait avec le maximum de N°poste.
Si vous avez une idée ça m'aiderais grandement.
Merci d'avance
Croy il me faut la liste des nom d'opérations car ce que je veux c'est savoir la dernière opération réalisée par N° de fabrication et on le sait avec le maximum de N°poste.
Si vous avez une idée ça m'aiderais grandement.
Merci d'avance
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
23 mai 2008 à 11:28
23 mai 2008 à 11:28
Il faut retirer nomOperation de la liste apès le SELECT.
Si tu as un besoin spécifique, pourrais-tu nous donner un exemple de table de données (10 enregistrements au plus) et ce que tu voudrais obtenir.
Si tu as un besoin spécifique, pourrais-tu nous donner un exemple de table de données (10 enregistrements au plus) et ce que tu voudrais obtenir.
Croy je ne peut pas retirer le nom opération car il faut que cette info soit visible je te met un exemple:
N°de fabrication:1 N°poste:5 Nom opération: arrière
N°de fabrication:1 N°poste: 10 Nom opération: avant
N°de fabrication:1 N°poste: 20 Nom opération: droite
N°de fabrication:2 N°poste: 15 Nom opération: bas
N°de fabrication:2 N°poste: 25 Nom opération: haut
N°de fabrication:3 N°poste: 10 Nom opération: avant
N°de fabrication:3 N°poste: 15 Nom opération: bas
N°de fabrication:4 N°poste: 5 Nom opération: arrière
La base de données me recence toutes les opérations correspondant aux numéros de fabrication. Le numéro de poste correspont à l'avancement de la production.
Ce qu'il me faut c'est 3 colonnes avec le N° de fabrication, le N° de poste et le nom de l'opération mais avec un critère qui est que le numéro de poste sélectionné soit le plus grand pour un numéro de fabrication et qu'il me mette a coté le nom de l'opération correspondant.
C'est à dire pour l'exemple:
N°de fabrication:1 N°poste: 20 Nom opération: droite
N°de fabrication:2 N°poste: 25 Nom opération: haut
N°de fabrication:3 N°poste: 15 Nom opération: bas
N°de fabrication:4 N°poste: 5 Nom opération: arrière
Mais le souci c'est que mon programme ne veut pas que je fasse juste le max(numéro de poste) group by (numéro de fabrication). Il me met à la place (group by (numéro de fabrication; nom opération)
N°de fabrication:1 N°poste:5 Nom opération: arrière
N°de fabrication:1 N°poste: 10 Nom opération: avant
N°de fabrication:1 N°poste: 20 Nom opération: droite
N°de fabrication:2 N°poste: 15 Nom opération: bas
N°de fabrication:2 N°poste: 25 Nom opération: haut
N°de fabrication:3 N°poste: 10 Nom opération: avant
N°de fabrication:3 N°poste: 15 Nom opération: bas
N°de fabrication:4 N°poste: 5 Nom opération: arrière
La base de données me recence toutes les opérations correspondant aux numéros de fabrication. Le numéro de poste correspont à l'avancement de la production.
Ce qu'il me faut c'est 3 colonnes avec le N° de fabrication, le N° de poste et le nom de l'opération mais avec un critère qui est que le numéro de poste sélectionné soit le plus grand pour un numéro de fabrication et qu'il me mette a coté le nom de l'opération correspondant.
C'est à dire pour l'exemple:
N°de fabrication:1 N°poste: 20 Nom opération: droite
N°de fabrication:2 N°poste: 25 Nom opération: haut
N°de fabrication:3 N°poste: 15 Nom opération: bas
N°de fabrication:4 N°poste: 5 Nom opération: arrière
Mais le souci c'est que mon programme ne veut pas que je fasse juste le max(numéro de poste) group by (numéro de fabrication). Il me met à la place (group by (numéro de fabrication; nom opération)
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
23 mai 2008 à 12:07
23 mai 2008 à 12:07
Je te recommande de créer deux tables :
1. tblFabrication : avec numFabrication et numPoste
2. tblPostes : avec numPoste et nomOperation
create table tblPostes (numPoste INT, nomOperation VARCHAR(50));
Dans la table tblPostes, tu n'as qu'une seule fois chaque poste :
15,'bas'
25,'haut'
10,'avant'
5,'arrière'
Dans la table tblFabrication, tu ne répètes pas le nomOperation que tu vas chercher au moment du SELECT par :
Ceci donne le détail des opérations. Pour avoir ce que tu veux :
Ceci est une organisation qui tire parti de l'organisation dite "base de données relationnelle"
1. tblFabrication : avec numFabrication et numPoste
2. tblPostes : avec numPoste et nomOperation
create table tblPostes (numPoste INT, nomOperation VARCHAR(50));
Dans la table tblPostes, tu n'as qu'une seule fois chaque poste :
15,'bas'
25,'haut'
10,'avant'
5,'arrière'
Dans la table tblFabrication, tu ne répètes pas le nomOperation que tu vas chercher au moment du SELECT par :
SELECT F.numFabrication,F.numPoste,P.nomOperation FROM tblFabrication AS F, tblPostes AS P WHERE F.numPoste=P.numPoste;
Ceci donne le détail des opérations. Pour avoir ce que tu veux :
SELECT F.numFabrication,Max( F.numPoste),P.nomOperation FROM tblOperations AS F, tblPostes AS P WHERE F.numPoste=P.numPoste GROUP BY F.numFabrication;
Ceci est une organisation qui tire parti de l'organisation dite "base de données relationnelle"