[SQL]difficulté de création de requete
Fermé
MuronY
Messages postés
47
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
27 août 2008
-
19 juin 2008 à 09:16
kazouu Messages postés 466 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 - 19 juin 2008 à 11:00
kazouu Messages postés 466 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 - 19 juin 2008 à 11:00
A voir également:
- [SQL]difficulté de création de requete
- Creation de compte google - Guide
- Creation de site web - Guide
- Création de compte gmail - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Logiciel création karaoké gratuit - Télécharger - DJ & Karaoké
4 réponses
Est-ce que tu à crée tes clés étrangères ?
Sinon la première question j'ai pas tout capté...
J'ai cru comprendre que tu ne voulais pas de doublons, dans ce cas utilise DISTINCT.
Sinon la première question j'ai pas tout capté...
J'ai cru comprendre que tu ne voulais pas de doublons, dans ce cas utilise DISTINCT.
NebJ
Messages postés
19
Date d'inscription
mercredi 18 juin 2008
Statut
Membre
Dernière intervention
22 juin 2008
4
19 juin 2008 à 09:30
19 juin 2008 à 09:30
Bonjour,
Pour ta première question, c'est: SELECT DISTINCT markimp FROM consommable;
Pour ta dexième question, tu dois apprendre à crée des jointures. Ca devrais donner quelque chose du genre: SELECT SUM(prix.prixcon*commande.qtecomm) AS TT FROM prix JOIN commande ON (prix.numcon=commande.numcon AND prix.numfou=commande.numfou AND numfou='$numfou' AND numcomm='$numcomm');
Pour ta première question, c'est: SELECT DISTINCT markimp FROM consommable;
Pour ta dexième question, tu dois apprendre à crée des jointures. Ca devrais donner quelque chose du genre: SELECT SUM(prix.prixcon*commande.qtecomm) AS TT FROM prix JOIN commande ON (prix.numcon=commande.numcon AND prix.numfou=commande.numfou AND numfou='$numfou' AND numcomm='$numcomm');
MuronY
Messages postés
47
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
27 août 2008
1
19 juin 2008 à 09:36
19 juin 2008 à 09:36
Le distinct est un bonne idée, il marche niquel et évite donc les redondances :)
Par contre en ce qui concerne la requête on ma toujours appris que les jointure se fesait dans le WHERE
d'une part c'est beaucoup plus simple puis bon accessoirement sa fonctionne ^^
Mais la requête proposé ne marche pas non plus : s
Par contre en ce qui concerne la requête on ma toujours appris que les jointure se fesait dans le WHERE
d'une part c'est beaucoup plus simple puis bon accessoirement sa fonctionne ^^
Mais la requête proposé ne marche pas non plus : s
Je l'ai dis dans mon premier post...
Si tu n'a pas crée tes clés étrangères, ça ne sert à rien d'essayer de faire des jointures. :s
Créer tes tables comme cela :
CREATE TABLE `commande` (
`numcomm` int(11) NOT NULL DEFAULT '0',
`datcomm` date NOT NULL DEFAULT '0000-00-00',
`qtecomm` int(11) NOT NULL DEFAULT '0',
`numcon` int(11) NOT NULL DEFAULT '0',
`numfou` int(2) NOT NULL DEFAULT '0',
PRIMARY KEY (`numcomm`,`numcon`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Structure de la table `prix`
--
CREATE TABLE `prix` (
`numcon` int(11) NOT NULL DEFAULT '0',
`prixcon` double NOT NULL DEFAULT '0',
`numfou` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ALTER TABLE prix
ADD CONSTRAINT FK_numcon
FOREIGN KEY ( numcon ) REFERENCES commande( numcon );
ALTER TABLE prix
ADD CONSTRAINT FK_numfou
FOREIGN KEY ( numfou ) REFERENCES commande( numfou );
De plus, numfou de prix c'est int(11) et numfou de commande c'est int(2).
Si tu n'a pas crée tes clés étrangères, ça ne sert à rien d'essayer de faire des jointures. :s
Créer tes tables comme cela :
CREATE TABLE `commande` (
`numcomm` int(11) NOT NULL DEFAULT '0',
`datcomm` date NOT NULL DEFAULT '0000-00-00',
`qtecomm` int(11) NOT NULL DEFAULT '0',
`numcon` int(11) NOT NULL DEFAULT '0',
`numfou` int(2) NOT NULL DEFAULT '0',
PRIMARY KEY (`numcomm`,`numcon`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Structure de la table `prix`
--
CREATE TABLE `prix` (
`numcon` int(11) NOT NULL DEFAULT '0',
`prixcon` double NOT NULL DEFAULT '0',
`numfou` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
ALTER TABLE prix
ADD CONSTRAINT FK_numcon
FOREIGN KEY ( numcon ) REFERENCES commande( numcon );
ALTER TABLE prix
ADD CONSTRAINT FK_numfou
FOREIGN KEY ( numfou ) REFERENCES commande( numfou );
De plus, numfou de prix c'est int(11) et numfou de commande c'est int(2).
MuronY
Messages postés
47
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
27 août 2008
1
19 juin 2008 à 10:11
19 juin 2008 à 10:11
alors tous le monde est passé en int(2) et j'ai référence les clef étrangère grâce a ton code mais cela ne donne toujours rien : s
en tout cas merci quand même maintenant les clef sont bien liées.
Peut être que l'erreur vient des la requête non ?
pour info j'ai vérifier les variable elle sont bonne ^^
en tout cas merci quand même maintenant les clef sont bien liées.
Peut être que l'erreur vient des la requête non ?
pour info j'ai vérifier les variable elle sont bonne ^^
MuronY
Messages postés
47
Date d'inscription
vendredi 18 mai 2007
Statut
Membre
Dernière intervention
27 août 2008
1
19 juin 2008 à 10:38
19 juin 2008 à 10:38
trouver ! un problème de champ ambigu : numfou='$numfou' était ambigu mais commande.numfou='$numfou' fonctionne parfaitement :)
Voila merci a tous pour vos réponse et votre implication :)
Voila merci a tous pour vos réponse et votre implication :)
kazouu
Messages postés
466
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
24 juillet 2008
12
19 juin 2008 à 11:00
19 juin 2008 à 11:00
dans ta requete met
SELECT SUM(prix.prixcon*commande.qtecomm) AS TT FROM prix JOINcommande WHERE prix.numcon=commande.numcon AND prix.numfou=commande.numfou AND numfou='$numfou' AND numcomm='$numcomm';
SELECT SUM(prix.prixcon*commande.qtecomm) AS TT FROM prix JOINcommande WHERE prix.numcon=commande.numcon AND prix.numfou=commande.numfou AND numfou='$numfou' AND numcomm='$numcomm';