質問

私表したい。

いすべてのカテゴリーに分類テーブルもすべての項目を契約によりユーザーのcategory_subscriptionsます。

基本的にこれが私のクエリでは:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions 
     ON user_category_subscriptions.category_id = categories.category_id

この作品は細かじゃなくてもいいと思うんだけど追加where節の終了のクエリを本質的にその内/エす。

   SELECT *
    FROM categories
    LEFT JOIN user_category_subscriptions 
         ON user_category_subscriptions.category_id = categories.category_id 
   WHERE user_category_subscriptions.user_id = 1

の行き方を教えてください全てのカテゴリすべての項目を契約により、特定のユーザーをク?

category_idているキー両方のカテゴリテーブルuser_category_subscriptions.user_id在住のuser_category_subscriptionsます。

感謝

役に立ちましたか?

解決

置する必要がありますので、 join 条項ではなく、 where:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions ON 
    user_category_subscriptions.category_id = categories.category_id
    and user_category_subscriptions.user_id =1

参照、 inner join, を免除等の条項の join または where ます。しかし、 outer join, も大幅に異なります。

として join 条件を指定しまrowsetきされます。この評価 user_id = 1 最初にサブセットの user_category_subscriptionsuser_id1 参加するとすべての行 categories.この条件下では、すべての行 categories, なみの categories この特定のユーザーが加入している情報の user_category_subscriptions 列あります。もちろん、その他の categories するデ nulluser_category_subscriptions 列あります。

逆に、 where 条項は、 その のrowset.なので、これは全ての参加とそれを解消すべての行が user_id ない等しい 1.だが残り、亜碧(上海)商貿有限公司取得する inner join.

この立ちます♪

他のヒント

これを試してください

  SELECT *
    FROM categories
    LEFT JOIN user_category_subscriptions 
         ON user_category_subscriptions.category_id = categories.category_id 
   WHERE user_category_subscriptions.user_id = 1 
          or user_category_subscriptions.user_id is null
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top