Jesper Rasmussen skrev:
> Jeg skal lave en søgefunktion, der søger i flere tabeller, der
> ikke har nogen relationer til hinanden.
Det er sjældent nødvendigt - hvad skal du bruge søgningen til?
> SELECT * FROM tabel_01, tabel_02 WHERE navn LIKE '%x%'
Det er et CROSS JOIN (selvom operatoren ikke angives) som vil
returnere krydsproduktet af de to tabeller, filtreret på feltet
navn (som kun må optræde i én af tabellerne).
> Det løser bare ikke helt mit problem, da jeg her får data fra
> begge tabeller i hvert resultat.
Skal du have to resultater? I så fald skal du bare bruge to
forespørgsler (der evt. kan fyres af sammen):
SELECT * FROM tbl1 WHERE navn LIKE '%x%'; SELECT * FROM tbl2 WHERE
produkt LIKE '%x%';
> Jeg ønsker at kunne søge på Navn i tabel_01 og Produkt i
> tabel_02.
Hvis du vil have ét postsæt med poster fra tabel_01 og tabel_02
[1] kan du bruge en UNION-forespørgsel:
SELECT id, navn FROM tabel_01 WHERE navn LIKE '%x%'
UNION
SELECT produktID, navn FROM tabel_02 WHERE produkt LIKE '%x%'
Du skal være opmærksom på at det kun virker når alle
forespørgslerne (der kan være flere end to) har samme antal felter,
og felttyperne passer sammen (felt1 i første forespørgsel skal have
samme datatype som felt1 i de andre og så fremdeles).
Feltnavnene i den færdige forespørgsel bestemmes alene af den
første forespørgsel - og et eventuelt sorteringskriterium skal
sættes ind _efter_ den sidste SELECT.
Noter:
======
[1] Hvis det er rigtige tabelnavne vil jeg anbefale dig at bruge mere
beskrivende navne i fremtiden. Det er langt lettere at overskue en
database hvis tabel- og felt-navne afslører lidt om hvad de
indeholder.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO -
www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)