Bonjour,
J'ai actuellement des petits problèmes de SQL ... hehe
Si quelqu'un savait ... ce serait cool ...

Voila :
3 bases : donnees, TableData et entreprises :


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
CREATE TABLE "DONNEES"
(
  "ID" VARCHAR(15) NOT NULL,
  "NOM" VARCHAR(150),
  "CODEPOSTAL" VARCHAR(5),
  "VILLE" VARCHAR(150),
  "ANNEE" INTEGER NOT NULL,
  "CONSOL" INTEGER DEFAULT 0 NOT NULL,
 PRIMARY KEY ("ID", "ANNEE", "CONSOL")
);
 
CREATE TABLE "ENTREPRISES"
(
  "ID" CHAR(16) NOT NULL,
  "ANNEE" NUMERIC(4, 0) NOT NULL,
 
    tout plein de valeurs (x70)
 
  "CONSOL" INTEGER DEFAULT 0 NOT NULL,
 PRIMARY KEY ("ID", "ANNEE", "CONSOL")
);
 
 
CREATE TABLE "TABLEDATA"
(
  "ID" VARCHAR(15) NOT NULL,
    "NB" NUMERIC(18, 4),
    tout plein de valeurs (x>100)
  "..."  NUMERIC(18, 4),
 
  "ANNEE" INTEGER NOT NULL,
 PRIMARY KEY ("ID", "CONSOL", "ANNEE")
);


Quand je fais ces requêtes, ca fonctionne nickel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
SELECT TableData.{FIELD1, FIELD2, ...}, donnees.{FIELD1, FIELD2, ...},
entreprises.{...}
FROM donnees
INNER JOIN TableData ON TableData."ID" = donnees."ID" AND TableData."CONSOL"
= donnees."CONSOL"
 LEFT JOIN entreprises ON TableData."ID" = entreprises."ID" AND
TableData."CONSOL" = entreprises."CONSOL" AND TableData."ANNEE"
=entreprises."ANNEE"
WHERE (( ( TableData."CONSOL" = '0')) AND (TableData."ANNEE"= '2002'));

Par contre, quand je fais les requêtes suivantes, cela mets trois ans :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
SELECT TableData.{FIELD1, FIELD2, ...}, donnees.{FIELD1, FIELD2, ...},
entreprises.{...}
FROM donnees
INNER JOIN TableData ON TableData."ID" = donnees."ID" AND TableData."CONSOL"
= donnees."CONSOL"
LEFT JOIN entreprises ON TableData."ID" = entreprises."ID" AND
TableData."CONSOL" = entreprises."CONSOL" AND TableData."ANNEE"
=entreprises."ANNEE"
WHERE (( ( TableData."CONSOL" = '0') AND  ( donnees."CODEPOSTAL" LIKE '45%')
AND  ( entreprises."COL5" >= '0.2') AND ( ( TableData."NB" >= '50000000')
AND  ( TableData."NB" <= '150000000'))) AND (TableData."ANNEE"= '2002'));
Qeulqu'un aurait une solution ?
S'il vous plait !


[Balise code ajoutée par King Kaiser]