0

我们有两张表:

产品和商店

一家商店本质上可以拥有许多产品。我们从 products 表中进行选择,但我们将其内部连接到 stores 表,以便我们只选择来自当前“活动”商店的产品。

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

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

这是我的两个查询:

店老板

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

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

4

2 回答 2

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)
于 2013-09-24T12:52:27.063 回答
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 )
于 2013-09-24T12:59:13.493 回答