MySQL中的“条件连接” - (条件下的不同连接)

时间:2013-09-24 12:47:36

标签: mysql sql join inner-join

我们有两张桌子:

产品和商店

商店基本上可以有很多产品。我们从产品表中进行选择,但我们将其加入到商店表中,以便我们只选择来自当前“活跃”商店的产品。

但是,如果不是正在查看给定产品的STORE OWNER,我们只希望发生这种行为。

因此,基本上我想要做的是,有一个查询,我们可以提供当前登录的user_id到查询,并对stores表进行连接。如果提供的user_id与stores表中的user_id匹配,那么它就是商店所有者 - 我们应该允许他们查看产品[这将基本上加入不同的条件]。如果user_id与stores表中的user_id不同,则它是普通用户,不应该被允许查看该产品。

以下是我的两个问题:

店主

SELECT products.* from products
INNER JOIN stores
ON stores.id = products.store_id
AND stores.user_id = <supplied userid>

普通用户

SELECT products.* from products
INNER JOIN stores
ON stores.id = products.store_id
AND stores.is_active = 1

如果可能的话,我基本上想把它们放到一个查询中。

2 个答案:

答案 0 :(得分:4)

SELECT products.* from products
INNER JOIN stores
ON stores.id = products.store_id
AND (stores.user_id = <supplied userid> OR stores.is_active = 1)

答案 1 :(得分:0)

两个内连接应该可以解决问题。

SELECT products.* from products
INNER JOIN stores owners_store ON ( owners_store.id = products.store_id AND owners_store.user_id = <supplied userid> )
INNER JOIN stores user_stores ON ( user_stores.id = products.store_id AND user_stores.is_active = 1 )