Как показать только один дубликат?

0

Это своего рода расширение этого вопроса mysql not in или value = 0?

У меня есть две базы данных, у которых есть информация о виджетах, а другая - макет этих виджетов в соответствии с модулем. На странице у меня есть списки, чтобы поместить эти виджеты, такие как Заголовок, Контент, Боковая панель и Нижний колонтитул. Существует также список виджета, который не используется. Вот где я столкнулся с проблемой.

Вот mysql, который я использую:

SELECT *
FROM widgets AS w
    LEFT JOIN widget_layouts AS wl
        ON w.id = wl.widget_id
WHERE wl.widget_id IS NULL
    OR wl.module_id <> '2'

Здесь отображается весь виджет, у которого нет module_id из 2. Поэтому, если я поместил один из виджетов в другой список, он все равно будет отображаться в списке неиспользуемых виджета, потому что он также используется другим виджетами.

Вот таблица widget_layouts:

|Module_id | Widget_id | Position | Weight|
-------------------------------------------
|2         |3          |1         |0      |
|1         |9          |3         |3      |
|1         |8          |3         |2      |
|1         |3          |2         |1      |

Итак, вот вопрос:

Как отобразить список виджетов, которые не используются модулем 2 или не существуют?

EDIT:

Я попытаюсь прояснить, что я пытаюсь сделать. Я хочу, чтобы список отображал виджеты, отсутствующие в списке, и виджеты, которые не используются модулем 2, но если он используется модулем 2, то не отображать этот виджет.

У меня есть два списка для контента и один, который отображает доступные виджеты. Поэтому, когда я перетаскиваю виджет 3 из списка виджетов в список содержимого. Затем в обновлении браузера отображаются два виджета 3, один в списке содержимого и один в доступном списке.

Итак, как мне показать виджеты, которые не находятся в базе данных, и если виджет используется модулем 2, он не отображается в доступном списке?

Теги:
duplicates

1 ответ

1

Вы можете группировать столбцы с одинаковыми значениями с SQL:

SELECT widget_id
FROM widgets AS w
    LEFT JOIN widget_layouts AS wl
        ON w.id = wl.widget_id
WHERE wl.widget_id IS NULL
    OR wl.module_id <> '2'
    GROUP BY widget_id
  • 0
    +1. GROUP BY или DISTINCT - это два способа объединения дубликатов.
  • 0
    Я попробовал это, и я все еще получаю дубликат виджета № 3. Любое другое предложение?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню