[英]Select rows in one table based on an id that appears in a column on a different table AND have multiple matches based on another column
[英]Select rows from a table if one of them matches with another table
我有3張桌子:
product
表具有字段group_id
(是產品的組)。
movement_product
表具有一個字段movement_id
(與movement
表匹配)和product_id
(與product
表匹配)。
我想從一個特定的產品組中選擇機芯的所有機芯產品。
我嘗試了以下SQL:
SELECT
mp.*
FROM
movement AS m,
movement_product AS mp
WHERE
m.id = mp.movement_id
AND EXISTS (
SELECT *
FROM product p
WHERE mp.product_id = p.id
AND p.group_id = "48"
)
GROUP BY mp.movement_id
但是它只返回該特定組中的產品的列表(group_id上的48僅是示例)。
如果我理解正確,則可以遵循此邏輯。 首先,獲得所有合格的動作:
select distinct mp.movement_id
from movement_products mp
where exists (select 1
from products p
where p.id = mp.product_id and
p.group_id = 48
);
要使產品適應這些趨勢,您可以執行以下操作:
select mp.*
from movement_products mp
where mp.movement_id in (select mp.movement_id
from movement_products mp
where exists (select 1
from products p
where p.id = mp.product_id and
p.group_id = 48
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.