我已经阅读了几篇关于这个问题的SO帖子,但我仍然不理解该解决方案。我认为我只是缺少一些小事,就使这项工作正常:另一个MySQL 1066.不是唯一的表/别名:从多个表中选择'events'
#1066 - Not unique table/alias:
#1066 - error not unique table alias
#1066 - Not unique table/alias: 'tb_X'
这里是在查询一个变种我试过,如果我运行这个,MySQL Workbench 6.1刚刚进入la-la-land,我必须取消查询。
SELECT `events`.`DateTime`, `events`.`User`, `eventdetails`.`ItemName`, `eventdetails`.`ItemValue`
FROM `events`, `eventdetails`
INNER JOIN `events` events1 ON `events1`.`Event_ID` = `eventDetails`.`Event_ID`
WHERE `events`.`PCBID` = 12946
ORDER BY `events`.`DateTime` DESC;
这种变异给我的称号1066错误:
SELECT `events`.`DateTime`, `events`.`User`, `eventdetails`.`ItemName`, `eventdetails`.`ItemValue`
FROM`events`, `eventdetails`
INNER JOIN `events` ON `events`.`Event_ID` = `eventDetails`.`Event_ID`
WHERE `events`.`PCBID` = 12946
ORDER BY `events`.`DateTime` DESC;
我明白,我使用的是events
表两次,但似乎并没有能够得到一个可行的版本那不超时。
我的数据:
的 '事件' 的结果应该来自于这些行:
Event_ID | PCBID | EventType_ID | DateTime | User
73819 | 12946 | 1 | 03-Sep-09 07:10:07 | USERNAME
73992 | 12946 | 1 | 11-Sep-09 06:51:09 | USERNAME
74159 | 12946 | 1 | 16-Sep-09 07:22:49 | USERNAME
74445 | 12946 | 1 | 08-Jan-10 13:41:16 | USERNAME
和 'eventdetails' 结果应该来自于这些行:
EventDetails_ID | Event_ID | ItemName | ItemValue
37595 | 73819 | SBESerialNumber | 70000862
37948 | 73992 | Notes | Passed IMM Cold Test B
38115 | 74159 | Notes | passed UCSD specific timing test
38423 | 74445 | SBESerialNumber | 00000000
预期结果:
我要找应该是这个样子的结果:
DateTime | User | ItemName | ItemValue
03-Sep-09 07:10:07 | USERNAME | SBESerialNumber | 70000862
11-Sep-09 06:51:09 | USERNAME | Notes | Passed IMM Cold Test B
16-Sep-09 07:22:49 | USERNAME | Notes | passed UCSD specific timing test
08-Jan-10 13:41:16 | USERNAME | SBESerialNumber | 00000000
第一个查询工作对我来说:http://www.sqlfiddle.com/#!2/6bdd6/1 – Barmar 2014-08-27 17:28:43
你为什么与'events'两次加入?你从不使用'events1'中的任何东西。 – Barmar 2014-08-27 17:31:58
@Barmar我相信OP正试图通过该连接删除Cartesian Product ...而不是仅仅以正确的方式去做 – 2014-08-27 17:32:31