[mysql] fulltext search icm INNER JOIN

Pagina: 1
Acties:

  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
Ik probeer een full text search te combineren met een Inner Join maar mijn SQL kennis schiet hier duidelijk een beetje te kort.

Fulltext searchen is geen probleem en dat werkt prima.

Waar het fout mee gaat is het volgende:

Tabel posts wil ik inner joinen met tabel languages en tabel post2lang zodat ik in mijn search alleen resultaten terug krijg doe voldoen aan de predefined $language.

Wat voorbeeld code

PHP:
1
2
3
4
5
6
7
8
$sql = "SELECT ID, post_title, post_content,"
         . "MATCH (post_name, post_content) "
         . "AGAINST ('$terms') AS score "
         . "FROM $wpdb->posts WHERE "
         . "MATCH (post_name, post_content) "
         . "AGAINST ('$terms') "
         . "AND post_date <= '$now' "
         . "AND (post_status IN ( 'publish',  'static' ) && ID != '$post->ID') ";

Deze full text search querie werkt zoals ie moet werken.

output
code:
1
SELECT ID, post_title, post_content,MATCH (post_name, post_content) AGAINST ('jaumetic at club fellini') AS score FROM wp_posts WHERE MATCH (post_name, post_content) AGAINST ('jaumetic at club fellini') AND post_date <= '2006-10-03 14:44:48' AND (post_status IN ( 'publish', 'static' ) && ID != '685')


Hier wil ik het volgende stuk querie 'inplakken':

SQL:
1
2
         INNER JOIN wp_post2lang as p2l ON wp_posts.ID = p2l.post_id
         INNER JOIN wp_languages as l ON p2l.language_id = l.language_id 


Echter, en nou komt het leuke, heb ik geen idee hoe ik beide kan combineren. Is het überhaupt wel mogelijk? Alles wat ik tot nu toe heb geprobeerd levert een mooie sql error op.

Iemand een tip?

Verstand van Voip? Ik heb een leuke baan voor je!


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 11-02 22:38

ripexx

bibs

SQL:
1
2
3
4
5
6
7
8
SELECT ID,
post_title, 
post_content,
MATCH (post_name, post_content) AGAINST ('jaumetic at club fellini') AS score 
FROM wp_posts 
WHERE MATCH (post_name, post_content) AGAINST ('jaumetic at club fellini') AND 
post_date <= '2006-10-03 14:44:48' AND 
(post_status IN ( 'publish', 'static' ) && ID != '685')


Plus de twee joins, let op dat je een inner join ook kan schrijven in de vorm van:
SQL:
1
SELECT iets FROM tb1, tb2 WHERE tb1.id = tb2.id;


SQL:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT wp_posts.ID,
wp_posts.post_title, 
wp_posts.post_content,
MATCH (wp_posts.post_name, wp_posts.post_content) AGAINST ('jaumetic at club fellini') AS score 
FROM wp_posts,
wp_post2lang,
wp_languages
WHERE wp_posts.ID = wp_post2lang.post_id AND
wp_post2lang.language_id = wp_languages.language_id AND
MATCH (wp_posts.post_name, wp_posts.post_content) AGAINST ('jaumetic at club fellini') AND 
wp_posts.post_date <= '2006-10-03 14:44:48' AND 
(wp_posts.post_status IN ( 'publish', 'static' ) && wp_posts.ID != '685')


Bovenstaande ins trouwens zo even snel uit het hoofd en copy/paste de rest moet dan wel lukken toch?

[ Voor 4% gewijzigd door ripexx op 03-10-2006 18:44 ]

buit is binnen sukkel


  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

Topicstarter
Woei :)

Ik had zelf ook een werkende sql in elkaar geknutseld, maar die was dermate ranzig dat ik die niet heb gepost. Dit werkt ook, en mysql engine kan er ook nog redelijk mee uit de voeten.

Top!

Verstand van Voip? Ik heb een leuke baan voor je!