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]