我发现很多基于第三个ID的合并两个表的类似帖子,但是我似乎无法解决逻辑问题。mysql根据第三个ID创建两个表的视图
给 三个表
tableA
| uuid | ttl | ord |
-----------------------
| alpha| Alp | 1|
| beta| Bet | 2|
| gamma| Gam | 3|
tableB
| uuid | ttl | ord | tab_A_ref
--------------------------------
| joe | Jo | 1| alpha
| mike | Mi | 2| beta
| peter| Pe | 3| alpha
| alan | Pe | 4| beta
| tom | Pe | 5| gamma
tableC
| uuid | ttl | ord | tab_A_ref
--------------------------------
| jane | Ja | 1| alpha
| marg | Ma | 2| beta
| phobe | Ph | 3| alpha
| anon | An | 4| beta
| toni | To | 5| gamma
我期待用一个基本的连接创建一个视图 myView
其中tab_A_ref = alpha or beta
| uuid | ttl | ord | tab_A_ref
| joe | Jo | 1| alpha
| peter | Pe | 3| alpha
| jane | Ja | 1| alpha
| phobe | Ph | 3| alpha
| mike | Mi | 2| beta
| alan | Pe | 4| beta
| marg | Ma | 2| beta
| anon | An | 4| beta
,
SELECT
tableB.uuid, tableB.ttl, tableB.ord, tableB.tab_A_ref
FROM tableB
INNER JOIN tableA on tableB.tab_A_ref = tableA.uuid
我延长了逻辑合并两个
SELECT
tableB.uuid, tableB.ttl, tableB.ord, tableB.tab_A_ref,
tableC.uuid, tableC.ttl, tableC.ord, tableC.tab_A_ref,
FROM
tableB INNER JOIN tableA on tableB.tab_A_ref = tableA.uuid,
tableC INNER JOIN tableA on tableC.tab_A_ref = tableA.uuid
但产生错误not unique table/alias: tableA
从其他帖子看来,我应该有一个嵌套bracketed
JOIN,尝试了许多组合都失败。那么如何格式化第二个JOIN
?
您正在使用'JOIN'不正确,最后一行只是需要'INNER JOIN tableC ON ...'而没有预先输入逗号 – RealCheeseLord
这个数据结构看起来非常不规范。为什么表B和C具有相同的字段?他们当然应该是一张桌子?如果它们代表相同但具有略微不同属性的内容(例如,似乎有男性名字和女性名字),那么只需额外添加一列就可以更好地进行区分。 – ADyson
如果所有tableB和tableC行都在tableB中,那么查询(包括对alpha/beta的限制)将简单地为'SELECT tableB.uuid,tableB.ttl,tableB.ord,tableB.tab_A_ref FROM tableB INNER JOIN tableA on tableB.tab_A_ref = tableA.uuid WHERE tableA.uuid in('alpha','beta')' – ADyson