Mailinglisten-Archive |
hallo Manuel Manuel Koller wrote: > Ich muss in mehreren gleichen Tables der gleichen Datenbank eine > Volltextsuche durchführen. > Ist es möglich alle mit einem einzigen select-Befehl zu durchsuchen? > Ich habe es mal mit > my $ra_resultate = $dbh->selectall_arrayref('select * from Table1, > Table2 where (subject like '%rot%' or text like '%rot%') and (subject > not like '%grün%' and text not like '%grün%')'); > probiert, doch dies ergibt den Fehler: "Column: 'subject' in where > clause is ambiguous". Nee, das geht leider nicht. Es muss stattdessen heissen: select * from Table1 as t1, Table2 as t2 where (t1.subject like '%rot%' or t1.text like '%rot%') and (t1.subject not like '%grün%' and t1.text not like '%grün%') or (t2.subject like '%rot%' or t2.text like '%rot%') and (t2.subject not like '%grün%' and t2.text not like '%grün%'); achte übrigens auf die '... ich nehm an, dass du im script da etwas andere notation verwendest... ansonsten müsstest du die ' slashen (\') achte auch darauf, dass je nach tabellen-grösse da die speicherauslastung etwas hoch ausfallen kann. die tabellen werden germergt und da kein zusammenhang besteht, ergibt das ne table der grösse SizeOfTable1 ^ SizeOfTable2 und je nach dem wieviele tabellen du da hast, kann sich das dann ziemlich schnell in ziemlich hohe regionen ausweiten. wie wär's also mit einem vorbereiteten sql-query, welches die tabelle als parameter erlaubt? select * from ? where (subject like '%rot%' or text like '%rot%') and (subject not like '%grün%' and text not like '%grün%'); grüessli, johannes --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive