Можно ли иметь левое соединение, которое дало бы результат, как в следующем предположении:Complicated (мой) SQL покинул присоединиться
Таблица A:
id value
1 foo
2 bar
3 foobar
ТАБЛИЦА B:
foreign foreign_value
1 fish
1 soup
Результатом соединения должен быть каждый результат таблицы A (левое соединение), а также объединенные результаты между A и B:
SELECT * FROM Сложный присоединиться к B ON A.id = B.foreign:
id value foreign foreign_value
1 foo NULL NULL
1 foo 1 fish
1 foo 1 soup
2 bar NULL NULL
3 foobar NULL NULL
При выполнении нормальной LEFT JOIN первая строка в показанном примере-результирующем не будет существовать.
Возможна ли такая выбор?
Что вы имеете в виду 'external join'. – Sebas
Я не уверен, чего вы пытаетесь достичь. Это не объединение, поскольку оно включает в себя несуществующие значения из других источников. (null-null для foreign/value в случае id = 1, например). Зная больше об этом, это поможет. – Sebas
Вся история, вероятно, связана с плохим дизайном базы данных/таблиц, результатом которого является добавление дополнительной функции. В CMS мы показываем записи «Новости», которым назначена какая-то страница (простое поле «pid»). Новая функция позволяет показывать новости на нескольких страницах. Для этого я добавил таблицу M-M, содержащую ссылки на новости <-->. Теперь мне нужно совместить старый запрос типа «pid» с новым запросом MM, и все это сводится к этому вопросу. – kraftb