これが私のカテゴリ構造です:
• Department
• Category
• Sub-Category
これが私のデータベースです:
特定の部門のランダムな商品を6つ表示したい。したがって、たとえば、ユーザーが部門ページを表示する場合、その部門のすべての製品のみが必要です。私が抱えている問題は、部門だけを取得する方法がわからないことです。何らかの理由で、カテゴリからの製品しか取得できません...もう1つのレベルに進む必要があります。
これが私のSQLです:
SELECT *
FROM products p
LEFT JOIN products_categories pc
ON p.product_id = pc.product_id
LEFT JOIN categories c
ON pc.category_id = c.category_id
WHERE c.category = 119
ORDER BY RAND()
LIMIT 6
119が部門IDになりますが、それほど下に行くことができないため、クエリは空になります。
編集 私は誰にとっても物事を簡単にするためにSQLFiddleを作成しました...非常にクールなツール;)
http://sqlfiddle.com/#!2/964ed/3
編集私はもっとよく説明する必要があると思っています
だから私は私のカテゴリーを3つ深くしています。部門、カテゴリ、およびサブカテゴリ。部門には関連付けられた製品はなく、すべての製品がサブカテゴリに関連付けられています。私の製品は私の部門に直接結び付けられていないので、どのようにして部門の下のすべてを取得するクエリを作成できますか?それが最も多くの製品を持っているので、私は銃器の下ですべてを手に入れようとしています。Firearms id(119)を使用してクエリを実行すると、何も表示されませんか?しかし、サブカテゴリIDの1つを使用すると、結果が得られますか?だから、私はある種のサブセレクトか何かをする必要があると思いますが、確かではありません。うまくいけば、それは物事をクリアします:)
期待される結果for119
である
を使用して、次のレコードを取得したいと思います。category_id
firearms
(143, 131, 'single-shot')
(144, 131, 'semiautomatic')
(145, 131, 'bolt-action')
(146, 131, 'pump & lever action')
(171, 130, 'bolt-action')
(174, 136, 'safe')
(178, 130, 'single-shot')
(179, 130, 'pump & lever action')
(180, 130, 'semiautomatic')
(182, 181, 'shotgun ammunition')
(183, 181, 'rimfire ammunition')
(184, 181, 'centerfire ammunition')
(185, 181, 'handgun ammunition')
(186, 120, 'cooking')