Daniel Nümm: MySQL INNER JOIN

Hallo,

Ich hab eine Datenbank mit 3 Tabellen. tb_urls, tb_keywords und tb_keyword_url_map.

tb_urls
-tf_id
-tf_url

tb_keywords
-tf_id
-tf_keyword

tb_keyword_url_map
-tf_id
-tf_keyword_id
-tf_url_id
-tf_score

wenn ich nach einem keyword suche möchte ich die entsprechenden URLs aus der tb_urls. Das klappt auch mit folgendem Syntax.

SELECT tf_url FROM tb_urls INNER JOIN tb_keyword_url_map ON (tb_urls.tf_id = tb_keyword_url_map.tf_url_id) INNER JOIN tb_keywords ON (tb_keyword_url_map.tf_keyword_id=tb_keywords.tf_id) WHERE tb_keywords.tf_keyword = 'frank' ORDER BY tb_keyword_url_map.tf_score DESC

nun möchte ich aber nach mehreren Wörtern suchen z.B. "frank" + "meyer" und ich habe leider keine Ahnung wie ich das machen soll. da die WHERE clausel ja nicht einfach mit einem AND erweitert werden kann.

vielleicht hat jemand einen Tipp für mich

  1. Hallo

    SELECT tf_url FROM tb_urls INNER JOIN tb_keyword_url_map ON (tb_urls.tf_id = tb_keyword_url_map.tf_url_id) INNER JOIN tb_keywords ON (tb_keyword_url_map.tf_keyword_id=tb_keywords.tf_id) WHERE tb_keywords.tf_keyword = 'frank' ORDER BY tb_keyword_url_map.tf_score DESC

    nun möchte ich aber nach mehreren Wörtern suchen z.B. "frank" + "meyer" und ich habe leider keine Ahnung wie ich das machen soll. da die WHERE clausel ja nicht einfach mit einem AND erweitert werden kann.

    WHERE tf_keyword IN ('frank', 'meyer')

    falls es ausreicht, dass eines der beiden Suchworte gefunden wird, eine
    logische UND-Verknüpfung kann ja keinen Datensatz finden.

    Falls mehrere Keywords eingetragen sein können, dann könntest Du mit Aliasnamen
    arbeiten, siehe dazu mein Archivposting: </archiv/2007/4/t150508/#m978117>

    Freundliche Grüße

    Vinzenz