У меня есть структура таблицы, подобная следующей:
table a:
id int
name varchar
table b:
id int
name varchar
table c:
id int
valid tinyint
table_a int
table_b int
По сути, таблица c отображается между таблицами a и b, а также имеет столбец, чтобы определить, является ли что-то действительным (1 или 0).Я хочу иметь возможность выбрать каждое имя (только один раз) из таблицы a и связанный столбец 'valid' из таблицы c (и значение по умолчанию 0, если оно не существует) и ограничить его путем сопоставления table_b с идентификатором.Надеюсь, это имеет смысл.
Вот некоторые примеры данных, которые помогут показать, что я имею в виду:
Используя структуру таблицы, как указано выше, у меня есть эти данные:
Table a:
(id, name)
1, row 1
2, row 2
3, row 3
Table b:
(id, name)
1, row a
2, row b
Table c:
(id, valid, table_a, table_b)
1, 1, 1, 1
Теперь я хочу выбрать все имена из таблицы a, столбец 'valid' из c (по умолчанию 0, если ни одна строка не соответствует) и ограничить поля 'valid' только теми, которые table_b = 1.Надеюсь, это имеет больше смысла?
Итак, я хочу вернуть следующее, где b.id = 1:
(a.name, c.valid)
row 1, 1
row 2, 0
row 3, 0