0

どなたかこのやり方を教えてください。私は 2 つのテーブルを持っています。最初のテーブル (ページ) 全体を選択し、user_id = 1 の sencond テーブルから選択する必要があります

表 1: ページ

--------------------------------------
  page_id  |  page_url |   details   |  
--------------------------------------
      1    |    xxxx   |   wdredrr   |
      2    |    yyyy   |   rdsacsa   |
      3    |    zzzz   |   rscsacc   |
      4    |    aaaa   |   xdsxsxs   |
      5    |    bbbb   |   drxcraa   |
--------------------------------------

表 2: コントロール

-------------------------------------
control_id |  page_id  |   user_id  |  
-------------------------------------
      1    |      1     |      1    |
      2    |      3     |      1    |
      3    |      4     |      1    |
      4    |      1     |      2    |
      5    |      2     |      2    |
-------------------------------------

これが出力を期待するものです。

出力を期待する

--------------------------------------------------------------
  page_id  |  page_url |   details  | control_id |   user_id  |
--------------------------------------------------------------
      1    |    xxxx   |   wdredrr   |      1     |      1    |
      2    |    yyyy   |   rdsacsa   |    null    |    null   |
      3    |    zzzz   |   rscsacc   |      2     |      1    |
      4    |    aaaa   |   xdsxsxs   |    null    |    null   |
      5    |    bbbb   |   drxcraa   |      3     |      1    |
--------------------------------------------------------------

ページ JOIN コントロール ON page.page_id = control.page_id WHERE control.user_id = '1'

誰かがこの問題を解決するのを手伝ってください。LEFT JOIN と RIGHT JOIN を試してみましたが、user_id = 1 の一致する行のみを取得します

4

3 に答える 3

1

where 句を on 句に入れると、期待される結果が得られるはずです。

select * from pages JOIN control ON page.page_id = control.page_id AND control.user_id = '1'
于 2015-08-07T13:45:51.743 に答える
1

これを試して

SELECT p.page_id, p.page_url, p.details, IF(c.user_id=1,c.control_id,NULL), IF(c.user_id=1,c.user_id,NULL) FROM page p LEFT JOIN control c ON(c.page_id=p.page_id)
于 2015-08-07T13:49:34.387 に答える
1

Inner join関連テーブルの結合条件で関連データが利用可能かどうかを確認するため、一致しないデータを除外します。何かleft joinの条件を次のように使用する必要がありますjoining clause

select 
p.*,
c.control_id,
c.user_id 
from page p left join control c on c.page_id = p.page_id and c.user_id = 1 
order by p.page_id;
于 2015-08-07T13:55:24.073 に答える