par
d0m » 04 oct. 2007, 14:47
j'ai du complexifier ma requete et là j'ai un peu de mal.
Je suis habitué des closes
WHERE et pas
JOIN
Voilà mes 3 tables :
Code : Tout sélectionner
CREATE TABLE table1
index MEDIUMINT(8) UNSIGNED NOT NULL auto-increment,
id MEDIUMINT(8) UNSIGNED NOT NULL default 0,
id1_table2 MEDIUMINT(8) UNSIGNED NOT NULL default 0,
id2_table2 MEDIUMINT(8) UNSIGNED NOT NULL default 0,
PRIMARY KEY(index)
CREATE TABLE table2
id MEDIUMINT(8) UNSIGNED NOT NULL default auto-increment,
nom varchar(8) UNSIGNED NOT NULL default '',
PRIMARY KEY(id)
CREATE TABLE table3
id MEDIUMINT(8) UNSIGNED NOT NULL default 0,
id_table1 MEDIUMINT(8) UNSIGNED NOT NULL default 0,
PRIMARY KEY(id)
le point de départ est la table 3 contenant des objets chacun rataché à un seul objet de la table 1
les objets de la table 1 sont des modèles des objets de la table 3.
A un modèle on associe 2 types (id1_table2 et id2_table2).
Ces types sont stockés avec leur nom dans la table 2.
Ce que je voudrais faire, c'est pour un ensemble d'objets de la table 3,
obtenir les noms des 2 types associés à chacun des objets (à travers leur modèle)
j'ai tenté la requête suivante :
Code : Tout sélectionner
SELECT table3.id as id_objet, table1.id as id_modele,t2_1.nom as nom_type1,t2_2.nom as nom_type2
FROM table1
JOIN table2 t2_1 ON t2_1.id = table1.id1_table2
JOIN table2 t2_2 ON t2_2.id = table1.id2_table2
JOIN table3 ON table3.id_table1 = table1.id
WHERE table3.id IN (chaine_des_identifiants)"
Mais la requête ne fonctionne carrément pas. Une idée?
*edit : fausse alerte, je suis moins nul que je ne le pensais, la requête fonctione c'était juste une erreur de nom de colonne.
j'ai du complexifier ma requete et là j'ai un peu de mal.
Je suis habitué des closes [i]WHERE[/i] et pas [i]JOIN[/i]
Voilà mes 3 tables :
[code]
CREATE TABLE table1
index MEDIUMINT(8) UNSIGNED NOT NULL auto-increment,
id MEDIUMINT(8) UNSIGNED NOT NULL default 0,
id1_table2 MEDIUMINT(8) UNSIGNED NOT NULL default 0,
id2_table2 MEDIUMINT(8) UNSIGNED NOT NULL default 0,
PRIMARY KEY(index)
CREATE TABLE table2
id MEDIUMINT(8) UNSIGNED NOT NULL default auto-increment,
nom varchar(8) UNSIGNED NOT NULL default '',
PRIMARY KEY(id)
CREATE TABLE table3
id MEDIUMINT(8) UNSIGNED NOT NULL default 0,
id_table1 MEDIUMINT(8) UNSIGNED NOT NULL default 0,
PRIMARY KEY(id)
[/code]
le point de départ est la table 3 contenant des objets chacun rataché à un seul objet de la table 1
les objets de la table 1 sont des modèles des objets de la table 3.
A un modèle on associe 2 types (id1_table2 et id2_table2).
Ces types sont stockés avec leur nom dans la table 2.
Ce que je voudrais faire, c'est pour un ensemble d'objets de la table 3,
obtenir les noms des 2 types associés à chacun des objets (à travers leur modèle)
j'ai tenté la requête suivante :
[code]
SELECT table3.id as id_objet, table1.id as id_modele,t2_1.nom as nom_type1,t2_2.nom as nom_type2
FROM table1
JOIN table2 t2_1 ON t2_1.id = table1.id1_table2
JOIN table2 t2_2 ON t2_2.id = table1.id2_table2
JOIN table3 ON table3.id_table1 = table1.id
WHERE table3.id IN (chaine_des_identifiants)"[/code]
Mais la requête ne fonctionne carrément pas. Une idée?
*edit : fausse alerte, je suis moins nul que je ne le pensais, la requête fonctione c'était juste une erreur de nom de colonne.