2009-07-14 12 views
1

私はmysqlは、このようなクエリを書くには、参加を左に?

最初の持っている:二

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 

第四問い合わせは第二と第三のクエリがどのように参加左用いたものmysqlのクエリ内のすべてのそれらを書くために最初のクエリ

からurls.urlの値をとる2番目のクエリ からwidgets.id取る必要がありますか?あなたの答えを事前に

感謝:)

+0

urls.urlは2番目と3番目に同じです –

+0

サンプルデータと取得したい結果セットを提供してください。 – Quassnoi

答えて

1
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であるそれらのウィジェットのために子供を選択します。

+0

それはURLからの選択URLから始める必要がありますか? と2つの結合が必要です。RLIKE 'urls.url'とis_father = 0、LIKE 'urls.url'とis_father = 1の結果が必要です –

関連する問題