1

私は2つのテーブルを手に入れました:

1 Category
- cID
- Name
- Active

2 Products
- pID
- Name
- category_id
- active

これは私が欲しいものです:私はアクティブな製品だけを持っているカテゴリーからのリストが欲しいです。

前もって感謝します

解決策:SELECTDISTINCTcategory。*FROMcategory INNER JOIN products ON category.id = products.c_id WHERE products.active = 0 ORDER BY category.id DESC

4

3 に答える 3

3

AssumeProducts.Active = 1はアクティブな状態を意味します。

SELECT c.*
FROM Category c
INNER JOIN Products p ON c.CID = p.category_id
GROUP BY c.CID
HAVING COUNT(*) = SUM(IF(p.Active = 1, 1, 0)) 
于 2012-10-14T12:44:04.003 に答える
1

私はこの
IMHOのような構造を提案します、それはあなたが本当に見たいものを示す構文です-アクティブな製品を持っているすべてのカテゴリー

select C.cID, C.Name, C.Active
from Category as C
where C.cID in (select distinct T.category_id from Products as T where T.Active = 1)
于 2012-10-14T17:05:12.480 に答える
1
SELECT * FROM Products
Join Category on Category.ciD = Products.category_id
WHERE Category.Active = 1 AND Products.Active =1

これは、アクティブな列が 1 または 0 であることを前提としています。それ以外の場合は、そこに格納している値に応じて調整してください。

于 2012-10-14T12:27:54.683 に答える