Hallo,

ik zit met een klein probleempje: ik heb meerdere tabellen in mijn database: tabel1, tabel2, tabel3 en tabel4. in tabel 1,2,3 en 4 zit dit:

tabel1 => entry
tabel2 => entry, in 3 en 4 ook:

als dit mijn query is:

SELECT
entry,
MATCH( entry ) AGAINST ( 'piet' )
AS score FROM tabel1, tabel2, tabel3, tabel4 WHERE MATCH( entry ) AGAINST ( 'piet' IN BOOLEAN MODE)
ORDER BY score DESC

Let a.u.b. niet op een komma teveel ofzo, dit is namelijk een aangepaste querie van de originele waar geen parse errors in zitten.....

Het probleem: Als ik deze query uitvoer krijg ik een error, waarvoor ik even een woorden boekje moest gaan pakken:

Column 'entry' in field list is ambiguous

ambiguous betekent in dit geval dubbelzinnig (tenminste volgens het woordenboek)

Weet iemand waar dit aan lig?t, betekent het dat ik column namen moet gaan veranderen (lijkt mij raar, want je mag bijv. wel in de map "henk" het bestand hallo.php hebben en dan in de map "piet" datzelfde bestand)

Alvast bedankt!

Ja ik wee waar dat aan ligt. Je vraagt een collum (entry) die in meerdere tabellen voorkomt zonder dat je aangeeft uit welke tabel.
Je zla dus zoiets moeten doen:

SELECT
tabel1.entry
MATCH( entry ) AGAINST ( 'piet' )
AS score FROM tabel1, tabel2, tabel3, tabel4 WHERE MATCH( entry ) AGAINST ( 'piet' IN BOOLEAN MODE)
ORDER BY score DESC

Ow ja tabel1 2 3 en klinkt als een belachelijk datamodel
Owke, bedankt!, het datamodel was maar om het makkelijker te maken, maar de volgende keer zal ik er wel moeilijke woorden zoals ambiguous voor gaan gebruiken:P
Nog een tip: schrijf je query's netjes uit, dat debugt gemakkelijker.

SELECT
    tabel1.entry,
    MATCH( entry ) AGAINST ( 'piet' ) AS score
FROM
    tabel1,
    tabel2,
    tabel3,
    tabel4
WHERE
    MATCH( entry ) AGAINST ( 'piet' IN BOOLEAN MODE)
ORDER BY
    score DESC

Verder is het aan te raden een ALIAS te gebruiken voor zoiets als tabel1.entry, anders kun je weer problemen bij het fetchen krijgen.

Reageren