объединение видов с предыдущими левыми объединениями и не умножение строк - PullRequest
0 голосов
/ 27 июля 2010

У меня есть 2 вида формы:

--View1
SELECT foo.id AS id FROM foo LEFT JOIN bar ON foo.id = bar.id
--Results
id
 1
 1
 1
 2
 2
 ...


--View2
SELECT foo.id AS id FROM foo LEFT JOIN manchu ON foo.id = manchu.id
--Results
id
 1
 1
 1
 2
 2
 ...

Теперь я хочу объединить два вида, чтобы строка № 1 из View1 была соединена со строкой № 1 из View2.

Если я присоединюсь к View1.id = View2.id, то строки будут умножаться друг на друга, а это не то, что я хочу. Есть ли способ добавить столбец к каждому представлению с уникальным номером, к которому я могу присоединиться? Или другое решение?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Вы можете добавить следующее в качестве столбца в каждом представлении:

ROW_NUMBER() over (order by id) as sequence

Тогда ваше объединение представлений будет View1.sequence = View2.sequence

Но ваше намерение все еще остается неясным.Похоже, вы хотите присоединиться к строке 1 в каждом представлении и присоединиться к строке 2 в каждом представлении и т. Д. С учетом того, что вы нам показали, ваши запросы не гарантируют последовательность строк для повторяющихся значений идентификаторов.

1 голос
/ 27 июля 2010

Используйте SELECT DISTINCT id в обоих видах вместо SELECT id и присоединитесь к ним на View1.id = View2.id. В этом случае у вас будет
ID
1
2
и т.д.
Если вам нужны другие результаты, пожалуйста, укажите в своем вопросе, что именно вы хотите получить.

...