2

アイテムとカテゴリ用に 2 つのテーブルがあります。カテゴリ テーブルはセルフ ジョイント テーブルです。

アイテム テーブルには、 ID、Item_Name、CategoryIDの列があります。

カテゴリ テーブルには次の列があります。CATID、category_name、parent_ID

このメイン カテゴリのカテゴリとサブカテゴリの下にリストされているアイテムを選択する必要がありますが、機能しません。これがmysqlで、サブのみを返します。

Select * from 
 Items A
where 
 A.CategoryID in(select CATID from categories 
    where CATID= %value% or parent_ID=%value%)    
4

2 に答える 2

2

フィールドは関連しているため、結合を使用します。カテゴリテーブルで1対多の関係が進行している場合は、を使用しますselect distinct

select distinct Items.*
from Items
join Categories as self_cat
    on (Items.CategoryID = self_cat.CATID)
left join Categories as parent_cat
    on (self_cat.parent_id = parent_cat.CATID)
where %value% in (self_cat.CATID, parent_cat.CATID)
于 2013-02-11T04:13:51.747 に答える
1

テーブルの自己結合で試行してtbl_categoryから、内部結合で試行しますtbl_item

SELECT i.ID as ItemID,
           i.item_name,
           c.catid AS categoryID,
           c.category_name AS categoryName,
           p.catid AS parentCategoryID,
           p.category_name as ParentCategoryName
 FROM tbl_item i
 INNER JOIN tbl_category p ON  p.catid = i.category_id 
 INNER JOIN tbl_category c ON  c.parent_id = p.catid 
 WHERE %value%  = p.cat_id  OR  %value%  = c.cat_id
于 2013-02-11T04:22:28.407 に答える