SQL按tag_name选择产品

时间:2019-06-13 19:14:16

标签: sql

我有一个像这样的SQL数据库

产品:

-id
-name

标签:

-tag_id
-tag_name

产品标签:

-product_id
-tag_id

我需要选择所有与名称相关的标签,例如%partial_tag_name%

我知道我必须做两个关节,但是我应该如何提出这个要求? 谢谢

编辑:感谢您的回复,我可以像这样构建请求:

        $results = Products::select(['product.*'])
            ->distinct()
            ->join('ProductTags', 'ProductTags.product_id', '=', products.id')
            ->join('tags', 'tags.tag_id', '=', 'ProductTags.tag_id')
            ->where('tags.tag_name', 'like',  "%{$query}%")
            ->get();

再次非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试

Select p.name from Tags t 
JOIN ProductTags pt ON pt.tag_id = t.tag_id 
JOIN Products p on p.id = pt.product_id 
WHERE tag_name like %tag_name%;

答案 1 :(得分:0)

#.#,,"M"