Bonjour j'ai un problème dans la construction d'une requête.

voici le script de génération de la base de données

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
-- phpMyAdmin SQL Dump
-- version 2.11.4deb1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Lun 25 Février 2008 à 00:25
-- Version du serveur: 5.0.51
-- Version de PHP: 5.2.5-3
 
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 
--
-- Base de données: `TestJoin`
--
 
-- --------------------------------------------------------
 
--
-- Structure de la table `table1`
--
 
CREATE TABLE IF NOT EXISTS `table1` (
  `ID_TABLE2_1` int(11) NOT NULL,
  `ID_TABLE2_2` int(11) NOT NULL,
  `ID_TABLE0_1` int(11) NOT NULL,
  `ID_TABLE0_2` int(11) NOT NULL,
  PRIMARY KEY  (`ID_TABLE2_1`,`ID_TABLE2_2`,`ID_TABLE0_1`,`ID_TABLE0_2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
--
-- Contenu de la table `table1`
--
 
INSERT INTO `table1` (`ID_TABLE2_1`, `ID_TABLE2_2`, `ID_TABLE0_1`, `ID_TABLE0_2`) VALUES
(1, 1, 1, 1),
(2, 1, 1, 1);
 
-- --------------------------------------------------------
 
--
-- Structure de la table `table2`
--
 
CREATE TABLE IF NOT EXISTS `table2` (
  `ID_TABLE2_1` int(11) NOT NULL,
  `ID_TABLE2_2` int(11) NOT NULL,
  `NAME` varchar(255) NOT NULL,
  PRIMARY KEY  (`ID_TABLE2_1`,`ID_TABLE2_2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
--
-- Contenu de la table `table2`
--
 
INSERT INTO `table2` (`ID_TABLE2_1`, `ID_TABLE2_2`, `NAME`) VALUES
(1, 1, 'name table2 1'),
(2, 1, 'name table2 2');
 
-- --------------------------------------------------------
 
--
-- Structure de la table `table3`
--
 
CREATE TABLE IF NOT EXISTS `table3` (
  `ID_TABLE4_1` int(11) NOT NULL,
  `ID_TABLE4_2` int(11) NOT NULL,
  `ID_TABLE2_1` int(11) NOT NULL,
  `ID_TABLE2_2` int(11) NOT NULL,
  PRIMARY KEY  (`ID_TABLE4_1`,`ID_TABLE4_2`,`ID_TABLE2_1`,`ID_TABLE2_2`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
--
-- Contenu de la table `table3`
--
 
INSERT INTO `table3` (`ID_TABLE4_1`, `ID_TABLE4_2`, `ID_TABLE2_1`, `ID_TABLE2_2`) VALUES
(1, 1, 1, 1),
(2, 1, 1, 1);
 
-- --------------------------------------------------------
 
--
-- Structure de la table `table4`
--
 
CREATE TABLE IF NOT EXISTS `table4` (
  `ID_TABLE4_1` int(11) NOT NULL,
  `ID_TABLE4_2` int(11) NOT NULL,
  `NAME` varchar(255) NOT NULL,
  `DEFAULT` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
--
-- Contenu de la table `table4`
--
 
INSERT INTO `table4` (`ID_TABLE4_1`, `ID_TABLE4_2`, `NAME`, `DEFAULT`) VALUES
(1, 1, 'name table4 1', 0),
(2, 1, 'name table4 2', 1);
et voici la requête que j'ai fait

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
select distinct(t2.NAME), t4.NAME
  from table2 t2
  inner join table1 t1
   on t2.ID_TABLE2_1 = t1.ID_TABLE2_1 and t2.ID_TABLE2_2 = t1.ID_TABLE2_2
  left outer join table3 t3
   on t2.ID_TABLE2_1 = t3.ID_TABLE2_1 and t2.ID_TABLE2_2 = t3.ID_TABLE2_2
  left outer join table4 t4
   on t3.ID_TABLE4_1 = t4.ID_TABLE4_1 and t3.ID_TABLE4_2 = t4.ID_TABLE4_2
   and t4.DEFAULT=1
  where t1.ID_TABLE0_1 = 1 and t1.ID_TABLE0_2 = 1
Actuellement ce que j'obtiens c'est

name table2 1| NULL
name table2 1| name table4 2
name table2 2 | NULL
Ce que j'aimerais c'est qu'une seule ligne apparaisse (je m'explique )
Dans ma table 4 j'ai un champs default qui est soit à 1 soit à 0. A chaque enregistrement de la table2 correspond une liste d'enregistrement de la table4. La table3 est une table de lien entre la table2 et la table4. (J'espère que tous le monde suit!!)
un enregistrement de la table2 à soit une liste d'enregistrment de la table 4 avec un unique enregistrement avec DEFAULT à 1 (le reste étant à 0) soit au cas enregitrement dans la table4

Mon objectif est d'afficher la liste des enregistrments de la table2 ayant la clause :
t1.ID_TABLE0_1 = 1 and t1.ID_TABLE0_2 = 1
mais je veux également afficher le champs NAME de la table4 ayant un DEFAULT à 1 ou rien si l'enregistrement de la table2 n'a pas d'enregistrement correspondant dans la table4. En bref pour moi la ligne "name table2 1| NULL " est en trop (ici j'ai essayé de mettre un distinct mais sa marche po).

J'espère avoir été clair.

Je ne peux pas modifier la structure de la base de données.

Est ce que quelqu'un peut m'aider? merci