如何使用WorkBench将MySQL数据库表一个接一个地反向工程到ERD上(How to reverse engineer MySQL database tables one-by-one onto an ERD using WorkBench)
我有一个包含数百个表的数据库,我想使用MySql Workbench的逆向工程功能创建一个ERD 。
但是同时对这些对象进行逆向工程超出了工作台的能力,所以我打算一个接一个地做,我已经知道了这五个相互关联并反向设计成功的表,现在我有他们的ERD 。 但是我想要做的是从我在同一个数据库中看到适合的更多表格,然后通过对这五个表进行逆向工程来生成ERD 。
我知道每次我想在这五个表中添加另一个表时,我可以通过生成一个新的ERD来实现这一点。 但是有没有解决方法,每次我想添加一个我认为与这五个表相关的新表时,我不需要进行逆向工程。
谢谢。
I have a database containing hundreds of tables, and I want to create an ERD out of that using MySql Workbench's reverse engineer feature.
But reverse engineering such amount of objects at once is beyond workbench's capabilities, so I'm planning to do it one-by-one, I already have these five tables that I know are related to each other and reversed engineered it successfully, and now I have an ERD of them. But what I want to do is add more tables as I see fit from the same database onto the generated ERD from reverse engineering those five tables before.
I know I can probably do this by generating a new ERD each time I want to add another table to those five tables. But is there a work-around for this that I don't have to reverse engineer each time I want to add a new table that I thinks is related to those five tables.
Thanks.
原文:
最满意答案
使用聚合函数时,所有标量字段必须位于
GROUP BY
函数中。你错过了这些:
LOCATION.LOCNAME, EVENTPLANLINE.TIMESTART, EVENTPLANLINE.TIMEEND
所以,正确的查询将是:
SELECT EVENTPLAN.PLANNO, EVENTPLANLINE.LINENO, RESOURCETBL.RESNAME, COUNT(EVENTPLANLINE.NUMBERFLD) AS NUMBEROFRESOURCES, LOCATION.LOCNAME, EVENTPLANLINE.TIMESTART, EVENTPLANLINE.TIMEEND FROM EVENTPLAN, RESOURCETBL, EVENTPLANLINE, LOCATION, FACILITY WHERE EVENTPLAN.PLANNO = EVENTPLANLINE.PLANNO AND EVENTPLANLINE.RESNO = RESOURCETBL.RESNO AND EVENTPLANLINE.LOCNO = LOCATION.LOCNO AND FACILITY.FACNO = LOCATION.FACNO AND FACILITY.FACNAME = 'Basketball arena' AND EVENTPLAN.ACTIVITY = 'Operation' AND EVENTPLAN.WORKDATE BETWEEN '1-OCT-13' AND '31-DEC-13' GROUP BY EVENTPLAN.PLANNO, EVENTPLANLINE.LINENO, RESOURCETBL.RESNAME, LOCATION.LOCNAME, EVENTPLANLINE.TIMESTART, EVENTPLANLINE.TIMEEND
When you use an aggregate function ALL scalar fields must be in
GROUP BY
function.You have missed these:
LOCATION.LOCNAME, EVENTPLANLINE.TIMESTART, EVENTPLANLINE.TIMEEND
So, the right query will be:
SELECT EVENTPLAN.PLANNO, EVENTPLANLINE.LINENO, RESOURCETBL.RESNAME, COUNT(EVENTPLANLINE.NUMBERFLD) AS NUMBEROFRESOURCES, LOCATION.LOCNAME, EVENTPLANLINE.TIMESTART, EVENTPLANLINE.TIMEEND FROM EVENTPLAN, RESOURCETBL, EVENTPLANLINE, LOCATION, FACILITY WHERE EVENTPLAN.PLANNO = EVENTPLANLINE.PLANNO AND EVENTPLANLINE.RESNO = RESOURCETBL.RESNO AND EVENTPLANLINE.LOCNO = LOCATION.LOCNO AND FACILITY.FACNO = LOCATION.FACNO AND FACILITY.FACNAME = 'Basketball arena' AND EVENTPLAN.ACTIVITY = 'Operation' AND EVENTPLAN.WORKDATE BETWEEN '1-OCT-13' AND '31-DEC-13' GROUP BY EVENTPLAN.PLANNO, EVENTPLANLINE.LINENO, RESOURCETBL.RESNAME, LOCATION.LOCNAME, EVENTPLANLINE.TIMESTART, EVENTPLANLINE.TIMEEND
相关问答
更多-
我们分步进行。 通过不连续的步骤处理任务通常更容易。 根据您的尝试,您似乎很清楚您正在努力解决一些基本概念。 我希望这有助于您学习这些概念 -- 1) First you know you are looking for authors, so select all the authors SELECT a.au_id FROM authors a -- 2) Build up all of your table joins since we know we will need data from a ...
-
使用相应的别名限定所有列。 另外, e. 不会应用于avg函数而是列工资 SELECT e.department_id, d.department_name, AVG(e.salary) FROM employees e JOIN departments d ON (e.department_id = d.department_id) GROUP BY e.department_id, d.department_name; Qualify all your columns w ...
-
您需要检查总和(数量),而不是数量 select "CUSIP", "SIDE", TRADEDATE, ACCOUNTNO, SUM("QUANTITY") as CompressedQuantity, case when sum(quantity) = 0 THEN 0 ELSE trunc(sum("PRICE"*"QUANTITY")/sum("QUANTITY"),6) END as AVERAGEPRICE from rawtable group by "SIDE", "TRADEDAT ...
-
你可以试试这个查询: SELECT CASE WHEN (SELECT COUNT(*) FROM table1) > 0 then (SELECT COUNT(*) FROM table1) ELSE (SELECT COUNT(*) FROM table2) END FROM dual; 它仍然丑陋,但它的作品:) You can try with this query: SELECT CASE WHEN (SELECT COUNT(*) FROM table1) > 0 ...
-
因此,您需要两个计数:本月所有案例的总计和仅针对Termed案例的总计。 最简单的方法是使用CASE()函数执行条件计数,如下所示: SELECT BPI.TYPE, EXTRACT(MONTH FROM CS.RECEIVED_DATE) MONTH, COUNT(*) all_cases, sum(case when RCSS.STATUS like 'Term%' then 1 else 0 end ) termed_cases FROM CELL_SOU ...
-
oracle sql如何按功能分组选择特定的不同集合(oracle sql how to select specific distinct set in group by function)[2023-11-07]
您可以使用两个IN子句(或EXISTS ): SELECT DISTINCT col1 FROM Table WHERE COL1 IN (SELECT Col1 FROM Table WHERE Col2 = 3) AND COL1 IN (SELECT Col1 FROM Table WHERE Col2 = 4) 或者这个GROUP BY SELECT Col1 FROM Table WHERE Col2 IN (3,4) GROUP BY Col1 HAVNG COUNT(DISTINCT Co ... -
我想我明白发生了什么。 这是你的子查询: (SELECT NVL(SUM(DQTD_CONSUMOT),0) FROM MYDB.DSO_TERMICO M WHERE M.COD_FILIAL = D.COD_FILIAL AND M.CODPRO = D.COD_MATERIAL AND M.ZTL_DATA >= SUBSTR(D.DTA_PRODUCAO,0,6)||'01' AND M.ZTL_DATA <= D.DTA_PRODUC ...
-
GROUP BY功能问题(GROUP BY Function Issue)[2022-04-17]
所以你想知道按地点划分的总工资,你想知道每个地方员工的姓名和年龄? 怎么样: SELECT e.NAME, e.AGE, e.LOCATION, t.TOTAL_LOCATION_PAY FROM EMPLOYEE e INNER JOIN (SELECT LOCATION, SUM(PAY) AS TOTAL_LOCATION_PAY FROM EMPLOYEE ... -
将过程中的查询更改为 SELECT e.NAME, SUM(p.QTY) INTO emp_name, total_qty FROM PURCHASES p INNER JOIN EMPLOYEES e ON e.EID = p.EID WHERE p.EID = empno GROUP BY e.NAME 基本上,使用WHERE而不是HAVING 。 如果你真的想使用HAVING你可以使用 SELECT p.EID, e.NAME, SUM(p.QTY) INTO emp ...
-
使用聚合函数时,所有标量字段必须位于GROUP BY函数中。 你错过了这些: LOCATION.LOCNAME, EVENTPLANLINE.TIMESTART, EVENTPLANLINE.TIMEEND 所以,正确的查询将是: SELECT EVENTPLAN.PLANNO, EVENTPLANLINE.LINENO, RESOURCETBL.RESNAME, COUNT(EVENTPLANLINE.NUMBERFLD) AS NUMBEROFRESOURCES, LOCATI ...