Match() returns a graded "relevance rating", as a floating point number
(when called as you call it) for matches. Words present in more than half
the rows are ignored, presence of a word in most rows lowers relevance,
presence of a word in just a few rows increases it, weights are then
combined to compute the return value. Match() doesn't sound quite like what
you are looking for, though what you're looking for isn't entirely clear
from your post.
The first problem is, extracting multiple keys from text, for matching
against keys in another table, is usually the sort of thing that is best
done before the data comes into the database. The reason is that the
assumptions underpinning SQL are not compatible with your use of the text
column as a key bank: your use violates one of Codd's rules, that a single
column should yield only one value. So you might want to consider breaking
out the key-containing text into rows of data that can be processsed by
ordinary SQL logic.
The second problem is, if you must find rows in tableB having key values
which have been found in a text column from certain rows in tableA, is a
match to be computed without regard to context, for example the text '123'
is to be accepted as a match no matter where it is found, and no matter
whether it occurs inside strings like '01234'? If so, have a look at the
Locate() function. OTOH, if there are context rules, you will probably need
to use regular expression logic to find the matches you want, so have a look
at <str REGEXP pattern> in the manual.
Once you reslve these two problems, probably simple JOIN syntax will get you
the SQL result you need.
HTH.
PB
----- Original Message -----
From: leegold
To: mySQL mailinglist
Sent: Wednesday, July 14, 2004 9:06 AM
Subject: Search one table, then display another table where keys match ?
If you would entertain a MYSQL/PHP, hope not too off-topicIt's
probably not difficult to solve - but you would be helping me
with some SQL logic.
The only way I can think of to explain what I want to do
is to give you my working newbie MSQL/PHP code that I'm learning
MYSQL/PHP with, and at a certain point in the code below I'll state
exactly as I can what I want to try to do. It's probably
quite simple but I can't get it- Thanks:
...
<pre>
<?php
$dblink = mysql_connect ( 'localhost', "guest", "password" );
mysql_select_db( "balloon", $dblink );
// Doing a FULLTEXT search
// Re the SELECT: I indexed both fields together, so seemed like
// I should put them both in the MATCH...OK, it works.
$query="SELECT * FROM balloon_txt WHERE MATCH(access_no, recs_txt)
AGAINST ('robin')";
$result = MySQL_query($query);
/////////////////////////////////
OK, right here - next below I'm gonna display/loop $result from table
balloon_txt. But, what I really want to do is take the "result set"
access_no fields from the search above and (access_no is a Key in all
my tables) and use it to generate results (ie. matching records) from
another table called balloon_rec and dispaly/loop the results from
balloon_rec. So I'm searching balloon_txt, getting results, but I want
to display matching records from another table - balloom_rec. Is there
a way to do a join or something in the SELECT above? Or do I process
$result? Seems a join in the SELECT above or some SQL above is cleaner
- but not sure how(?) Thanks, Lee G.
///////////////////////////////
while ( $row = mysql_fetch_row( $result ) ) {
for ( $i=0; $i<mysql_num_fields( $result ); $i++ )
{echo $row[$i] . " ;}
echo"\n\n\n";
}
// Close the db connection
mysql_close ( $dblink );
?>
</pre>
...
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:
http://lists.mysql.com/[EMAIL PROTECTED]