Запросить выбор подкатегорий категорий пунктов назначения, которые активны?

У меня есть таблица пунктов назначения (состояний), которые содержат категории и подкатегории первичного уровня для действий. Моя конечная цель - выводить навигационные ссылки в формате XML, чтобы я мог ссылаться на:

  1. Каждую постоянную ссылку назначения (упорядоченную в алфавитном порядке по имени слагаемого назначения)
  2. Каждая категория под
  3. Каждая подкатегория под категорией

Ниже приведено то, что Я сгенерирую запрос sql, если он не имеет отношения к запросу, но мне не нужна xml-помощь по этому вопросу :

<item href="/destinations/alabama/">
    <list>
        <item href="/destinations/alabama/category/">
            <list>
               <item href="/destinations/alabama/category/sub-category/"></item>
            </list>
        </item>
    </list>
</item>
<item href="/destinations/maryland/">
    <list>
        <item href="/destinations/maryland/category/">
            <list>
               <item href="/destinations/maryland/category/sub-category/"></item>
            </list>
        </item>
    </list>
</item>

В настоящее время у меня есть запрос, который захватывает подкатегории, но он не учитывает активные направления.

SELECT

subcategories.name AS subcategory_name,
subcategories.slug AS subcategory_slug,
categories.name AS category_name,
categories.slug AS category_slug

FROM

subcategories

LEFT JOIN destinations_subcategories ON
destinations_subcategories.subcategory_id = subcategories.id

LEFT JOIN categories ON
destinations_subcategories.category_id = categories.id

WHERE
1=1 AND
subcategories.is_active = 1 AND
categories.is_active = 1

Что возвращает:

subcategory_name    subcategory_slug    category_name    category_slug
Fly Fishing         fly-fishing         Fishing          fishing

Но этот запрос не учитывает активные назначения, так как можно сопоставить отношения между неактивными назначениями и активными категориями. Я' я думаю, что мне нужно иметь подзапрос, захватывающий все активные пункты назначения, а затем присоединиться?





СХЕМА / выборки строк:

id    name       slug       active
7     Maryland   maryland   1

Моя таблица категорий, строка выборки:

id    name       slug       active
1     Fishing    fishing    1

Пример строки таблицы подкатегорий:

id    name           slug           active
3     Fly-Fishing    fly-fishing    1

И 2 таблицы для хранения отношений, первая отображает подкатегории в категории:

id    category_id    subcategory_id
5     1              3

Вторая, Destination_subcategories отображает назначения в подкатегории:

id    destination_id   category_id    subcategory_id
5     7                1              3
1
задан meder omuraliev 17 August 2010 в 18:44
поделиться

2 ответа

а как насчет этого

SELECT

subcategories.name AS subcategory_name,
subcategories.slug AS subcategory_slug,
categories.name AS category_name,
categories.slug AS category_slug

FROM

destination 

INNER JOIN destinations_subcategories on destination.id = destinations_subcategories.destination_id and destination.active = 1

LEFT JOIN subcategories ON destinations_subcategories.subcategory_id = subcategories.id

LEFT JOIN categories ON destinations_subcategories.category_id = categories.id

WHERE 1=1 
AND subcategories.is_active = 1 
AND categories.is_active = 1

Это обеспечит отображение только активных пунктов назначения

1
ответ дан 2 September 2019 в 22:05
поделиться
SELECT destination.name , categories.name, sub-category.name 
FROM
destination_subcategories as ds, destinations, categories,  subcategories 
WHERE
ds.destination_id = destination.id and ds.catrgoy_id = category.id and ds.sub_category_id = sub_category.id and destination.is_active = 1 and categories.is_active = 1 and subcategory.is_active = 1;

Похоже, это должно работать, если только я неправильно понял схему.

1
ответ дан 2 September 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: