2012-08-29 26 views
0

有问题收到错误信息[ERR] 1060 - 重复列名 'ID'与MySQL声明

SELECT c.id, c.name, COUNT(all.id) 'All', 
     COUNT(unanswered.id) 'Unanswered', 
     COUNT(unchecked.id) 'Unchecked' 
FROM courses c 
INNER JOIN courses-lessons cl ON c.id = cl.cid 
INNER JOIN questions all ON cl.id = all.lid 
INNER JOIN 
(
    SELECT * 
    FROM questions 
    WHERE id NOT IN (SELECT qid FROM answers) 
) unanswered ON cl.id = unchecked.lid 
INNER JOIN 
(
    SELECT * 
    FROM questions q 
    INNER JOIN 
    (
     SELECT * 
     FROM answers 
     WHERE id NOT IN (SELECT aid FROM answer_chk_results) 
    ) a ON q.id = a.qid 
) unchecked ON cl.id = unchecked.lid 
GROUP BY c.id, c.name 

我缺少什么?找不到有什么问题。

UPDATE

数据库结构

https://docs.google.com/open?id=0B9ExyO6ktYcOenZ1WlBwdlY2R3c

回答

0

您的问题和答案表都有编号列。当你做SELECT *时,你会得到一个id列。尝试指定您在选择需要的列,而不是使用*

在这里看到了类似的问题:SQL Duplicate column name error

+0

更新问题。请检查出 – heron

+0

基本上,摆脱每个'*',用特定列替换(和别人说的一样,不要用ALL作为别名) – KrustyGString

0

不知道如果这是你的问题的一部分或没有,但你不应该别名表“的所有“因为它是一个MySQL关键字。

+0

已更新的问题。请查看 – heron

0

这是最有可能对您的查询的这个部分:

SELECT * 
FROM questions q 
INNER JOIN 
(
    SELECT * 
    FROM answers 
    WHERE id NOT IN (SELECT aid FROM answer_chk_results) 
) a ON q.id = a.qid 

外部查询将有两个字段叫做id,你应该指定你想要的id场。而不是使用SELECT *你应该叫出你需要的字段。

ALL也是reserved word,我会考虑改变这个别名或在它周围使用反引号`

根据您的表结构,它看起来像你想:

SELECT c.id, 
    c.name, 
    COUNT(allq.id) 'All', 
    COUNT(unanswered.id) 'Unanswered', 
    COUNT(unchecked.id) 'Unchecked' 
FROM courses c 
INNER JOIN courses-lessons cl 
    ON c.id = cl.cid 
INNER JOIN questions allq 
    ON cl.id = allq.lid 
INNER JOIN 
(
    SELECT q.id, a.qid, q.lid 
    FROM questions q 
    INNER JOIN 
    (
     SELECT id, qid 
     FROM answers 
     WHERE id NOT IN (SELECT aid FROM answer_chk_results) 
    ) a 
     ON q.id = a.qid 
) unchecked 
    ON cl.id = unchecked.lid 
INNER JOIN 
(
    SELECT id 
    FROM questions 
    WHERE id NOT IN (SELECT qid FROM answers) 
) unanswered 
    ON cl.id = unchecked.lid 
GROUP BY c.id, c.name 
+0

更新后的问题。请查看 – heron

+0

@epic_syntax查看我的编辑 – Taryn

+0

[Err] 1052 - 字段列表中的列'id'含糊不清 – heron