Hallo,
Ik wil 3 tabellen samenvoegen, welke dezelfde structuur ongeveer hebben

Dit heb ik nu zo gedaan:

SELECT * FROM 
T1, T2, T3
WHERE (
TRIM(T1.debnr) LIKE '%trefwoord%' OR 
TRIM(T2.debnr) LIKE '%trefwoord%' OR 
TRIM(T3.debnr) LIKE '%trefwoord%' OR 
TRIM(T1.fakadres) LIKE '%trefwoord%' OR 
TRIM(T2.fakadres) LIKE '%trefwoord%' OR 
TRIM(T3.fakadres) LIKE '%trefwoord%' OR 
TRIM(T1.wplaats) LIKE '%trefwoord%' OR 
TRIM(T2.wplaats) LIKE '%trefwoord%' OR 
TRIM(T3.wplaats) LIKE '%trefwoord%' OR 
TRIM(T1.locadres) LIKE '%trefwoord%' OR 
TRIM(T2.locadres) LIKE '%trefwoord%' OR 
TRIM(T3.locadres) LIKE '%trefwoord%' 
) AND ( 
TRIM(T1.debnr) NOT LIKE '1' AND 
TRIM(T1.debnr) NOT LIKE '2' AND 
TRIM(T1.debnr) NOT LIKE '20' AND 
TRIM(T1.debnr) NOT LIKE '30' AND 
TRIM(T2.debnr) NOT LIKE '1' AND 
TRIM(T2.debnr) NOT LIKE '2' AND 
TRIM(T2.debnr) NOT LIKE '20' AND 
TRIM(T2.debnr) NOT LIKE '30' AND 
TRIM(T3.debnr) NOT LIKE '1' AND 
TRIM(T3.debnr) NOT LIKE '2' AND 
TRIM(T3.debnr) NOT LIKE '20' AND 
TRIM(T3.debnr) NOT LIKE '30' AND 
LOWER(T1.debnaam) NOT LIKE '%vervallen%' AND 
LOWER(T2.debnaam) NOT LIKE '%vervallen%' AND 
LOWER(T3.debnaam) NOT LIKE '%vervallen%' 
) 
ORDER BY T1.debnr 


Maar het duurt zo vreselijk lang voordat ik een keer resultaten krijg.. Doe ik iets verkeerd in de syntax of is er iets anders aan de hand?
Wat je doet is volgens mij een enorme join met heeeeel veeel resultaat regels.
Om het zelf uit te rekenen kan je dit doen:
aantal resultaten in tabel 1 * aantal resultaten in tabel 2 * aantal resultaten in tabel 3

Als je dus in iedere tabel 50 rijen hebt, heb je nu in eens 50*50*50 = 125000 rijen.
huh, waarom vermenigvuldigt hij deze tabellen dan met elkaar?

Wan in iedere tabel staan ong. 3000 records.. :S
SELECT * FROM T1, T2, T3

is het zelfde als:
SELECT * FROM T1
 INNER JOIN T2
 INNER JOIN T3


Wat daar eigenlijk staat is combineer elke rij van tabel T1 met elke rij van tabel T2 en combineer die met elke rij van tebel T3.

Dan gaat ie dus alles combineren en krijg je een enorm resultaat, daarom vind je bij een join ook altijd een voorwaarde als:
SELECT * FROM T1, T2 WHERE T1.id=T2.id;

Wat weer het zelfde is als:
SELECT * FROM T1
 INNER JOIN T2 ON (T1.id=T2.id)

Reageren