Можно ли написать один запрос на две таблицы, которые не связаны друг с другом? - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть две таблицы, мне интересно, можно ли написать один запрос для этих двух таблиц, но они не связаны друг с другом?

пример кода, который будет очень полезен для моего понимания.

Таблица: Payment

Payment_id  Payment_status  amount
1  1001          201            400
2  1002          403            450
3  1003          204            460

после выполнения запроса: SELECT Payment_status FROM Payment GROUP BY Payment_staus

это дает мне результат как:

Payment_staus
1 201
2 403
3 204

У меня естьеще одна таблица с именем status_code как

  code    description
1 201     In progress
2 403     Complete
3 204      On Hold

В приведенном выше запросе я хочу Payment_staus и соответствующее описание, результат должен выглядеть следующим образом

   Payment_status  description 
1    201            In progress
2    403            Complete
3    204            On Hold

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Декартово соединение (обратите внимание, что нет условия JOIN).Все возможные комбинации записей находятся в результатах:

tableA (charfield Char(2))
tableB (numberfield Number(1))

INSERT 'A' INTO tableA;
INSERT 'B' INTO tableA;
INSERT 1 INTO tableB;
INSERT 2 INTO tableB;

SELECT * 
FROM   tablea CROSS JOIN tableb

Результаты:

charfield|numberfield
=====================
A        |1
A        |2
B        |1
B        |2    
1 голос
/ 21 февраля 2012
SELECT p.payment_id, p.Payment_status, s.description
FROM Payment p
JOIN status_code s
ON p.Payment_status = s.code

При этом используется SQL-соединение для соединения двух таблиц в свойстве code таблицы status_code.

Это даст вам такие результаты, как

Payment_id   Payment_status   description
1001         201              In progress
1002         403              Complete
1003         204              On Hold
0 голосов
/ 21 февраля 2012

Вы можете использовать запрос UNION, но типы полей / количество столбцов в обоих подзапросах должны совпадать:

SELECT a, b, c
FROM table1

UNION

SELECT p, q, r
FROM table2

Альтернативой является просто полное декартово объединение, которое может вернуть ОГРОМНЫЕ результирующие наборы, если две таблицы имеют большое количество строк - вы получите n x m строк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...