我需要创建一个 View ,并为我需要关联所有操作的所有事务设置。如果 TransactionOperation 中不存在操作,我需要输入结果。
Transaction( transaction id,transaction_name)
Operation(id_operation,operation_name);
TransactionOperatation(id_transaction,id_operation); // represents all transaction to be used
所以 View 是:
Create view title AS select
t.id_transaction as id_transaction,
t.name_transaction as name_transaction,
o.id_operation as id_operation,
o.name_operation as name_operation,
from ((TransactionOperation to
inner join transaction t on t.id_transaction=to.id_transaction)
rigth join operation o on o.id_operation=to.id_operation
问题是同事没有像我希望的那样工作。这必须是例如结果:
Operation id_operation operation_name
1 test
2 home
transaction id_transaction transaction_name
1 scope
2 pool
TransactionOperation id_operation operation_name id_transaction transaction name:
1 test 1 scope
1 test 2 pool
在这个例子中,我需要为每笔交易获取所有操作。 id=2 的操作不会出现在 TransactionOperation 中,但必须出现在结果中。我要的结果是这样
id_operation operation_name id_transaction transaction name:
1 test 1 scope
2 home 1 scope
1 test 2 pool
2 home 2 pool
谁能帮帮我?
最佳答案
您正在尝试获取 transaction
和 operation
之间所有可能的组合,尽管在联结表中没有定义它们之间的关系。这可以使用两个表的唯一值之间的笛卡尔积(CROSS JOIN
)来实现:
CREATE VIEW title AS
SELECT
t.*, o.*
FROM
(SELECT DISTINCT id_transaction, transaction_name FROM transaction) AS t
CROSS JOIN
(SELECT DISTINCT id_operation, operation_name FROM operation) AS o
关于mysql - 如何创建此权利加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53479432/