MySQL не в или значение = 0?

0

База данных называется виджетами, она имеет "id" и "title". База данных двух называется виджетами-макетами и имеет "id модуля", "widget-id", "position" и "weight".

То, что я пытаюсь сделать, это проверить, существует ли widgets.id в widget-layout.widget-id, и если это так, то делает widget-layouts.position = 0. Я также хочу получить значения виджетов которые не существуют в макетах виджетов.

Вот запрос mysql, с которым я работал.

SELECT * FROM виджетов, виджетов-макетов WHERE (widge-layouts.position = '0' И widgets.id = widget-layouts.widget-id) ИЛИ widgets.id NOT IN (SELECT * FROM виджет-макеты)

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

Любые идеи об этом?

Теги:
exists
multiple-tables

2 ответа

0
Лучший ответ
 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.position = '0'      
  • 0
    Это прекрасно работает, спасибо за помощь.
0
SELECT * FROM widgets LEFT JOIN widget-layouts on widget-id = id WHERE position = 0

должны показать те, которые существуют, и имеют положение = 0

SELECT * FROM widgets RIGHT JOIN widget-layouts on id = widget-id where id is NULL

должны показывать те, которые существуют только в макетах виджетов

Ещё вопросы

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