Avatar billede trophymanager Nybegynder
08. december 2005 - 11:17 Der er 5 kommentarer og
1 løsning

order by no match i forskellige rows

Hej Alle.

Jeg har en tabel med to forskellige rows med tekst i. Jeg vil gerne lave en SQL sætning der søger efter et ord i tabellen og returnerer et recordsæt der har en form for "ORDER BY count(felt1 LIKE '%$sogeord%' && felt2 LIKE '%$sogeord%')

Er der nogen der enten kan hjælpe mig lidt i gang eller henvise til et sted jeg kan læse om det? (Helst første :P)
Avatar billede trophymanager Nybegynder
08. december 2005 - 20:07 #1
hmm- altså fx


titel | indhold
--------------------
hej med dig bølle | du er en værre en hva?
--------------------------------------------
hejsa bølle | din lille bølle
------------------------------------------

hvordan laver jeg en query sorterer efter hvor tit ordet bølle forekommer?
Avatar billede tjp Mester
08. december 2005 - 22:49 #2
Du mener vel kolonner når du skriver 'rows'?
Hvad med noget a la dette:

De ønskede kolonner fulltext-indexeres ved oprettelsen:

CREATE TABLE tekster(
    ->  id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ->  tekstkolonne0 TEXT,
    ->  tekstkolonne1 TEXT,
    ->  FULLTEXT (tekstkolonne0,tekstkolonne1)

eller senere:

ALTER TABLE tekster ADD FULLTEXT (tekstkolonne0,tekstkolonne1)

Så burde en forespørgelse som følgende vist give det ønskede:

SELECT * FROM tekster
WHERE MATCH (tekstkolonne0,tekstkolonne1) AGAINST ('bølle');
Avatar billede trophymanager Nybegynder
10. december 2005 - 15:25 #3
jeg får

mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

efter jeg har gjort alt dette :/


$result = mysql_query("SELECT * FROM players WHERE MATCH (fornavn,efternavn) AGAINST ('ens')");
while ($row = mysql_fetch_array($result)) {

    echo $row['fornavn']." - ".$row['efternavn']."<br />";
}
Avatar billede trophymanager Nybegynder
10. december 2005 - 15:43 #4
prøver lige en anden:

sidder med denne nu. Når jeg fyrer min query af direkte på mysql serveren virker den fint - hvordan gør jeg det i php også?

$result = mysql_query("SELECT id, body, MATCH (title,body) as score AGAINST ('Security implications of running MySQL as root') AS score FROM articles WHERE MATCH (title,body) AGAINST  ('Security implications of running MySQL as root')");

while ($row = mysql_fetch_array($result)) {

    echo $row['body']." - ".$row['score']."<br />";
}
Avatar billede trophymanager Nybegynder
10. december 2005 - 15:49 #5
tjp hvis du ikke ved det smid et svar :P så forsætter jeg i php kategorien.

Har slået match op på mysql's side - der har stået en masse guf :P
Avatar billede tjp Mester
11. december 2005 - 00:39 #6
Der ligger allerede et svar... ;-)

Hvad siger den til noget simpelt som:
$result = mysql_query("SELECT * FROM articles")
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester