Requête qui me semble complexe

Fermé
Shibarbu Messages postés 11 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 5 juin 2013 - 5 juin 2013 à 16:36
jee pee Messages postés 40431 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 novembre 2024 - 5 juin 2013 à 17:07
Bonjour,

Voici ma base de données:

DROP TABLE IF EXISTS t_objets ;
CREATE TABLE t_objets (ID_objet int AUTO_INCREMENT NOT NULL, Nom_objet VARCHAR(50), PRIMARY KEY (ID_objet) ) ;
DROP TABLE IF EXISTS t_armes ;
CREATE TABLE t_armes (ID_arme int AUTO_INCREMENT NOT NULL, Rarete_arme INT(2), Nom_arme VARCHAR(50), ID_type INT NOT NULL, PRIMARY KEY (ID_arme) ) ;
DROP TABLE IF EXISTS t_mode_fabrication ;
CREATE TABLE t_mode_fabrication (ID_mode_fabrication int AUTO_INCREMENT NOT NULL, Nom_mode_fabrication VARCHAR(20), PRIMARY KEY (ID_mode_fabrication) ) ;
DROP TABLE IF EXISTS t_type ;
CREATE TABLE t_type (ID_type int AUTO_INCREMENT NOT NULL, Nom_type VARCHAR(20), PRIMARY KEY (ID_type) ) ;
DROP TABLE IF EXISTS l_fabrication ;
CREATE TABLE l_fabrication (ID_mode_fabrication int AUTO_INCREMENT NOT NULL, ID_objet INT NOT NULL, ID_arme INT NOT NULL, Cout_fabrication INT(6), Nombre_objet INT(3), Evolution_precedente INT, PRIMARY KEY (ID_mode_fabrication,  ID_objet,  ID_arme) );
ALTER TABLE t_armes ADD CONSTRAINT FK_t_armes_ID_type FOREIGN KEY (ID_type) REFERENCES t_type (ID_type);
ALTER TABLE l_fabrication ADD CONSTRAINT FK_l_fabrication_ID_mode_fabrication FOREIGN KEY (ID_mode_fabrication) REFERENCES t_mode_fabrication (ID_mode_fabrication);
ALTER TABLE l_fabrication ADD CONSTRAINT FK_l_fabrication_ID_objet FOREIGN KEY (ID_objet) REFERENCES t_objets (ID_objet);
ALTER TABLE l_fabrication ADD CONSTRAINT FK_l_fabrication_ID_arme FOREIGN KEY (ID_arme) REFERENCES t_armes (ID_arme); 


Je n'arrive pas à créer la requête pour avoir les colonnes:
Nom_mode_fabrication,
Nom_arme as "Nom",
Nom_arme as "Evolution précédente",
Nom_objet,
Nombre_objet,
Cout_fabrication

Je bloque sur le fait que j'ai deux fois à appeler Nom_arme, WHERE ne semble pas ouvert au double appel...

Si quelqu'un a une solution je lui en serais extrêmement reconnaissant

2 réponses

Shibarbu Messages postés 11 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 5 juin 2013
5 juin 2013 à 17:00
Bon, finalement je pense y être arrivé:

SELECT
	t_mode_fabrication.Nom_mode_fabrication,
	(SELECT t_armes.Nom_arme FROM t_armes, l_fabrication WHERE l_fabrication.Evolution_precedente = t_armes.ID_arme) as "Precedent",
	t_armes.Nom_arme,
	t_objets.Nom_objet,
	l_fabrication.Nombre_objet,
	l_fabrication.Cout_fabrication
FROM
	l_fabrication, t_mode_fabrication, t_objets, t_armes
WHERE
	l_fabrication.ID_mode_fabrication = t_mode_fabrication.ID_mode_fabrication
AND
	l_fabrication.ID_objet = t_objets.ID_objet
AND
	l_fabrication.ID_arme = t_armes.ID_arme
;
0
jee pee Messages postés 40431 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 novembre 2024 9 417
5 juin 2013 à 17:07
Salut,

En fait il faudrait que dans le from tu indiques 2 fois la tables t_armes avec un mnémo différent puisque utilisée 2 fois :

l_fabrication, t_mode_fabrication, t_objets, t_armes ta1, t_armes ta2


cdlt
0