Hallo,

Ik heb een drietal tabellen met allen vergelijkbare gegevens, deze gegevens moeten in aprate tabellen blijven, omdat het klantgegevens zijn van aparte onderaannemers binnen ons bedrijf.
Ik heb tot nu toe de tabellen samengevoegd met UNION ALL, maar wil dit nu doen met JOIN, zodat mijn SQL-statement een stuk korter wordt en dat scheelt weer in de grootte van mijn script.
Ik heb het volgende geprobeerd, maar ik kom er niet uit, hij geeft nl. geen resultaten.. Ik krijg de volgende foutmelding:

Notice: Column 'debnr' in where clause is ambiguous in W:\Web\Login\Algemeen\DB\debiteur.php on line 380

welke betrekking heeft op mysql_query($sql);

<?php
// Bouw query op met gekozen zoekveld en trefwoord
$sql = "SELECT
             debiteur_ts.debnr, debiteur_ts.debnaam, debiteur_ts.postadres, debiteur_ts.locadres, debiteur_ts.wplaats,   
             debiteur_bs.debnr, debiteur_bs.debnaam, debiteur_bs.postadres, debiteur_bs.locadres, debiteur_bs.wplaats, 
             debiteur_bsu.debnr, debiteur_bsu.debnaam, debiteur_bsu.postadres, debiteur_bsu.locadres, debiteur_bsu.wplaats
        FROM 
			debiteur_bs 
		INNER JOIN 
			debiteur_ts 
		INNER JOIN 
			debiteur_bsu
        WHERE (            
                TRIM(debnr) NOT LIKE ''
        ORDER BY debnr" or trigger_error(mysql_error());
?>


SELECT * FROM table_1 t1 LEFT JOIN table_2 t2 ON t2.veldnaam = t1.veldnaam

Dit is volgens mij een syntax voor een JOIN
SELECT etc....

FROM debiteur_ts ts INNER JOIN debiteur_bs bs ON bs.IDveld = ts.IDveld
INNER JOIN debiteur_bsu bsu ON bsu.IDveld = bs.IDveld

WHERE etc...

zoiets dus

sorry was eerste tabel vergeten

-- artikelen
artikel_id
artikel_naam
-- catogorieen
catogorie_id
catogorie_naam
-- k_catogorie_artikel
catogorie_id
artikel_id

<?php
"SELECT * FROM 	
			artikelen
		JOIN 	
			k_artikel_catogorie 
		ON 		
			k_artikel_catogorie.artikel_id = artikelen.artikel_id
		JOIN 	
			catogorieen 
		ON 		
			catogorieen.catogorie_id = k_artikel_catogorie.catogorie_id
		WHERE 
			catogorieen.catogorie_id = ".$catogoryID;


Volgens mij moet zo'n query werken..
Wat was je output bij EXPLAIN dan zie je namelijk hoeveel rijen er worden opgehaald ed. Daarna kan je gericht aan optimalisstei doen
Dat werkt, maar het gebruik van een ALIAS is vaak duidelijker.
<?php
"SELECT * FROM
artikelen AS art
JOIN
k_artikel_catogorie AS a_cat
ON
a_cat.artikel_id = art.artikel_id
JOIN
catogorieen AS cat
ON
cat.catogorie_id = a_cat.catogorie_id
WHERE
cat.catogorie_id = ".$catogoryID;
?>

Ik heb AS bij de ALIAS toegevoegd voor de leesbaarheid
@Klaasjan Boven;
krijg nu 3 resultaten, terwijl ik voorheen met UNION 77 resultaten kreeg..

Maar ik heb het idee dat jullie een verkeerd beeld hebben van mijn tabellen..

De eerste tabel is debiteurnummer 1000 tm 4999
De tweede tabel is debiteurnummer 5000 tm 7499
De derde tabel is debiteurnummer 7500 tm 9999

Elke tabel met klanten is van een andere onderaannemer, elke klant neemt contact op vor onderhoud, reparatie, etc met ons, de bovenaannemer.

Deze drie tabellen moeten alledrie tegelijkdoorzocht kunnen worden...
DUs ik kan niet iets als dit doen, als ik het goed begrijp;

<?php
-- artikelen
artikel_id
artikel_naam
-- catogorieen
catogorie_id
catogorie_naam
-- k_catogorie_artikel
catogorie_id
artikel_id

<?php
"SELECT * FROM
artikelen
JOIN
k_artikel_catogorie
ON
k_artikel_catogorie.artikel_id = artikelen.artikel_id
JOIN
catogorieen
ON
catogorieen.catogorie_id = k_artikel_catogorie.catogorie_id
WHERE
catogorieen.catogorie_id = ".$catogoryID;
?>

Want daarmee zeg je; dat de artikel_id in de tabel k_artikel hetzelfde moet zijn als de artikel_id in de tabel artikel, toch? en dat wanneer dat klopt, de records ge-joint worden...

Ik ga iig even naar de tut kijken van RObert
geef die resultaten eens. Want je moet zoiets krijgen


+----------+------+---------------+------+---------+------+------+------------+
| table    | type | possible_keys | key  | key_len | ref  | rows | Extra      |
+----------+------+---------------+------+---------+------+------+------------+
| employee | ALL  | NULL          | NULL |    NULL | NULL |    2 | where used 


hieruit kan je afleiden waar het meeste tijd te winnen is

en zoals ik al zei:

doe ook eens

OPTIMIZE tabel


enne.. leesvoer

Reageren