簡體   English   中英

如果其中一個與另一個表匹配,則從表中選擇行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM