Kevin Waterson schrieb:
> I have a table of bookmarks that have keyword searching.
> Fields
> 
> +-------------+----------------------+--------------------------+------------------+
> | bookmark_id | bookmark_title       | bookmark_url             | 
> bookmark_keyword |
> +-------------+----------------------+--------------------------+------------------+
> |           1 | number one           | http://www.phpro.org     | php         
>      |
> |           2 | number 2             | http://www.freshmeat.net | software    
>      |
> |           3 | three here           | http://www.php.net       | php         
>      |
> |           4 | and four             | http://www.redhat.com    | linux       
>      |
> |           5 | the fifth            | http://www.ez.no         | php         
>      |
> |           6 | this will do         | http://www.google.com    | search      
>      |
> |           7 | something about fish | http://www.youtube.com   | linux       
>      |
> |           8 | finally              | http://www.redhat.com    | php         
>      |
> +-------------+----------------------+--------------------------+------------------+
> 
> I wish to select all bookmark_title and bookmark_url that have the same 
> keywords as
> the bookmark_url 'http://www.redhat.com. I do this..
> mysql> SELECT child.bookmark_id, child.bookmark_title, child.bookmark_url 
> FROM bookmarks AS child join bookmarks AS parent ON parent.bookmark_keyword = 
> child.bookmark_keyword WHERE child.bookmark_url='http://www.redhat.com' GROUP 
> BY child.bookmark_keyword;
> 
> But this returns..
> +-------------+----------------+-----------------------+
> | bookmark_id | bookmark_title | bookmark_url          |
> +-------------+----------------+-----------------------+
> |           4 | and four       | http://www.redhat.com |
> |           8 | finally        | http://www.redhat.com |
> +-------------+----------------+-----------------------+
> 
> Where it should return also the results with the bookmark_id of 1 as the 
> bookmark_url
> http://www.redhat.com has two keywords, "php" and "linux" so this should 
> match both.
> 
> What should I be looking at here?

at first you should make your queries readable if your request public help ...

SELECT
        child.bookmark_id,
        child.bookmark_title,
        child.bookmark_url
FROM
        bookmarks AS child
join
        bookmarks AS parent
ON
        parent.bookmark_keyword = child.bookmark_keyword
WHERE
        child.bookmark_url='http://www.redhat.com'
GROUP BY
        child.bookmark_keyword;



than i would suggest using subqueries:



SELECT
        child.bookmark_id,
        child.bookmark_title,
        child.bookmark_url
FROM
        bookmarks AS child
WHERE
        child.bookmark_keyword IN (
SELECT
        parent.bookmark_keyword
FROM
        bookmarks AS parent
WHERE
        parent.bookmark_url = 'http://www.redhat.com'
)

-- 
Sebastian

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to