У меня есть две таблицы (с одной и той же схеме)Объединение двух SQL таблиц в запросе
Table1
id title D0 D1 D2 D3
------------------------------------
1 Title1 0.12 3.23 4.90 -0.12
1 Title1 0.22 0.32 -4.90 0.12
1 Title1 0.13 1.24 3.50 -0.22
...
1 TitleN 1.22 2.33 3.90 -1.56
и
Table2
id title D0 D1 D2 D3
------------------------------------
1 Title1 1.42 -0.93 -2.99 3.22
1 Title1 0.52 3.32 -4.90 0.54
1 Title1 2.13 1.14 3.50 -0.22
...
1 TitleN 3.42 4.37 3.90 -1.26
Я пытаюсь выяснить, как сделать запрос, как можно это сделать Математика:
SELECT title FROM Table2 WHERE (Table1_Row1_D0*Table2_Row1_D0)+(Table1_Row1_D1*Table2_Row1_D1)+(Table1_Row1_D2*Table2_Row1_D2) < 0.5;
Однако я бы хотел, чтобы запрос повторялся в строках таблицы 1 и выполнял SELECT по всему Таблица 2. В принципе, я хочу выбрать заголовки из Таблицы 2, где неравенство вычисления встречается во ВСЕХ комбинациях строк из Таблицы 1 и Таблицы 2.
Возможно ли это?
Не уверен, что это важно, но я использую Postgre.
Почему бы не «ВНУТР. ВСТУПИТЬ?»? – onedaywhen
Действительно хороший вопрос. Стандартное использование CROSS JOIN - это создание «декартового продукта», то есть, CROSSing таблицы M-row с таблицей N-строк даст вам строки M * N. Не существует условия JOIN для CROSS JOIN. Стандартное использование INNER JOIN - поиск совпадающих записей на основе одного или нескольких совпадающих столбцов в двух таблицах. Технически вы можете написать CROSS JOIN как INNER JOIN без соответствующих столбцов, но вы просто путаете людей. – anon
", где неравенство вычисления встречается во ВСЕХ комбинациях строк из Таблицы 1 и Таблицы 2" - это, похоже, не покрывается? Возьмите только 2 строки в t1 и 1 в t2. Скажем row1 возвращает true, а row2 возвращает false для условия, этот запрос STILL показывает table2.title .... этот ответ также может показывать дубликат table2.title много раз .. – RichardTheKiwi