mysql оставил join, как написать такой запрос? - PullRequest
1 голос
/ 14 июля 2009

у меня

первый:

select url from urls where site = '$value' order by url

второй:

select id, widget_name from widgets where display_urls LIKE 'urls.url' and is_father=1 order by id

Третье:

select id, widget_name from widgets where display_urls RLIKE 'urls.url' and is_father=0 order by id

Четвертое:

select id, widget_name, father_widget from widgets where father_widget = 'widgets.id' order by id

Четвертый запрос должен брать только widgets.id из второго запроса второй и третий запросы принимают значение urls.url из первого запроса

как написать все те в одном запросе MySQL, используя левое соединение?

Заранее спасибо за ваши ответы:)

1 Ответ

1 голос
/ 14 июля 2009
SELECT  w.id, w.widget_name, c.*
FROM    urls
JOIN    widgets w
ON      w.display_urls LIKE urls.url
        OR w.display_urls RLIKE urls.url
LEFT JOIN
        widgets с
ON      c.father_widget = w.id
        AND w.display_urls LIKE urls.url
        AND w.display_urls NOT RLIKE urls.url
WHERE   site = $value
ORDER BY
        url

Это выберет потомков только для тех виджетов, которые LIKE, но не RLIKE соответствующих url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...