login  Naam:   Wachtwoord: 
Registreer je!
 Forum

JOIN met 2 tabellen werkt niet (Opgelost)

Offline lau - 23/08/2007 15:37
Avatar van lauHTML interesse Ik heb 2 tabellen waarin mijn zoekmachine moet zoeken.

Tabel as_productgroep
=====================
id | artgroep | productnaam | zoek
--------------------------------------------------
15 | E2039 | waterfilter | zeef, doorzichtig
16 | FW393 | pomp | olie, sproei

Tabel as_artikel
================
id | product | artnummer
---------------------------
5 | 15 | Z105-W
6 | 15 | Z105-AB
9 | 15 | Z105-WZ
34 | 15 | Z105-P

Mijn zoekmachine moet zoeken in velden 'productnaam' en 'zoek' van tabel as_productgroep EN in veld 'artnummer' van tabel as_artikel. Daarbij wil ik enkel de gegevens van tabel as_productgroep laten weergeven en niets van tabel as_artikel. Dus de gegevens van mijn zoekresultaat bestaat uit tabel as_productgroep.
Veld 'product' van tabel as_artikel is gelijk aan veld 'id' van tabel as_productgroep. Er kunnen meerdere productid's zijn die wordt gelinkt naar 1 id van tabel as_productgroep.

Het probleem is dat mijn searchquery niet goed werkt.
Mijn query is:
  1. <?php
  2. $sSearchQueryA = "SELECT DISTINCT(".TBL_ART.".product), ".TBL_PRO.".id AS id, ".TBL_PRO.".artgroep AS artgroep, ".TBL_PRO.".productnaam AS productnaam FROM ".TBL_ART." INNER JOIN ".TBL_PRO." ON (".TBL_ART.".product = ".TBL_PRO.".id) WHERE ".TBL_PRO.".zoek LIKE '%".$_POST['zoeken']."%' OR ".TBL_PRO.".productnaam LIKE '%".$_POST['zoeken']."%' OR ".TBL_ART.".artnummer LIKE '%".$_POST['zoeken']."%' ORDER BY ".TBL_PRO.".artgroep ASC";
  3. ?>

Als ik zoek op '105' moet zoekmachine uiteindelijk 1 resultaat geven met artgroep E2039. Om ervoor te zorgen dat dubbele resultaten, anders krijg ik 4 dezelfde resultaat, vanuit tabel as_artikel verschijnen doe ik DISTINCT product. Dit werkt allemaal keurig als ik op artikelnummer zoek.
Maar stel dat ik als zoekterm 'water' invul, moet ik uiteindelijk ook 1 resultaat krijgen, maar dit doet hij niet. Hetzelfde geldt als ik op 'zeef' zoek. Ik krijg dan geen resultaat. Het probleem ligt denk ik bij een stukje ON (".TBL_ART.".product = ".TBL_PRO.".id), omdat ik dan niet meer zoek in tabel as_artikel.

Hoe krijg ik de resultaten als ik zoek in tabel as_productgroep?
Mijn volgende query werkt goed zolang ik tabel as_artikel niet integreer met JOIN.
  1. <?php
  2. $sSearchQueryA = "SELECT id, artgroep, productnaam FROM ".TBL_PRO." WHERE zoek LIKE '%".$_POST['zoeken']."%' OR productnaam LIKE '%".$_POST['zoeken']."%' ORDER BY artgroep ASC";
  3. ?>

2 antwoorden

Gesponsorde links
Offline Thomas - 23/08/2007 16:28
Avatar van Thomas Moderator Hm... Maak hier twee aparte queries van, want een LEFT JOIN gaat je ook niet redden denk ik. En doe dan een UNION ofzo, of voeg ze samen in PHP.
Offline lau - 23/08/2007 17:24
Avatar van lau HTML interesse LEFT JOIN werkt  
Bedankt voor het idee
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.171s