mysql - 如何创建此权利加入

标签 mysql sql view

我需要创建一个 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             

谁能帮帮我?

最佳答案

您正在尝试获取 transactionoperation 之间所有可能的组合,尽管在联结表中没有定义它们之间的关系。这可以使用两个表的唯一值之间的笛卡尔积(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/

相关文章:

sql-server - 我的 CREATE View 查询中不需要锁定吗

mysql - LEFT JOIN 与主查询的相对值

Mysql日期时间格式错误

php - 如何使用 mysql 在 php 中创建 attemp_login() 函数?

arrays - Laravel 5 从数据库结果中形成另一个数组

Android Chronometer 无法启动

php - 如何在php中爆破mysql表数据

mysql - 将特定行从一个表更新到另一个表

mysql - SQL:如何加入分层表关系

c# - SqlBulkCopy 在运行 WriteToServer(DataTable) 时抛出 System.FormatException