* Wilbert Enserink
> I'm using this query:
>
> CREATE temporary TABLE temptable SELECT * FROM gallery INNER JOIN
> designers
> ON (designers.designersID=gallery.designersID) WHERE
> (LOWER(gallery.omschrijving) LIKE '%$search%' OR
> LOWER(gallery.productnaam)
> LIKE '%$search%' OR LOWER(voornaam) LIKE '%$search%' OR LOWER(achternaam)
> LIKE '%$search%')
>
> now I get the result back: Duplicate column name 'designersID'
> DesignersID is a column in table gallery and in table designers-> which
> explains my LEFT JOIN.
> So I understand that MySQL is trying to build a table with 2 columns with
> the same name: designersID...
>
> anybody knows how to overcome this problem?

Don't use SELECT * ... specify the columns you want.

It would probably be faster if you split this into multiple queries, because
that will allow the use of indexes (if they are defined). Indexes will
however _not_ be used if you use LIKE "%$search%", only if you use LIKE
"$search%". This means "ilbert" will not be found, but that is normally
ok... and "Wilbert" or just "Wil" will be found a lot faster than if you use
LIKE "%$search%".

(If you have a very small database you may disregard this, keep your
"%$search%" and a single query.)

CREATE TEMPORARY TABLE temptable
  SELECT
    designers.designersID,
    gallery.omschrijving,
    gallery.productnaam,
    designer.voornaam,
    designer.achternaam
  FROM gallery INNER JOIN designers ON
    (designers.designersID=gallery.designersID)
  WHERE
    gallery.omschrijving LIKE '$search%';

INSERT INTO temptable
  SELECT
    designers.designersID,
    gallery.omschrijving,
    gallery.productnaam,
    designer.voornaam,
    designer.achternaam
  FROM gallery INNER JOIN designers ON
    (designers.designersID=gallery.designersID)
  WHERE
    gallery.productnaam LIKE '$search%';

INSERT INTO temptable
  SELECT
    designers.designersID,
    gallery.omschrijving,
    gallery.productnaam,
    designer.voornaam,
    designer.achternaam
  FROM gallery INNER JOIN designers ON
    (designers.designersID=gallery.designersID)
  WHERE
    designer.voornaam LIKE '$search%';

INSERT INTO temptable
  SELECT
    designers.designersID,
    gallery.omschrijving,
    gallery.productnaam,
    designer.voornaam,
    designer.achternaam
  FROM gallery INNER JOIN designers ON
    (designers.designersID=gallery.designersID)
  WHERE
    designer.achternaam LIKE '$search%';

There is no need to use LOWER(), unless your columns are defined as BINARY.

--
Roger


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to