【问题标题】:How to select the distinct values of three sql tables and perform inner join with python sqlite3?如何选择三个sql表的不同值并使用python sqlite3进行内连接?
【发布时间】:2022-01-05 00:36:58
【问题描述】:

我正在尝试对 SQLite DB 中的三个表的不同值执行内部连接。我试了很多次都失败了。请指导我。

下面是我想要实现的伪代码

sql = ''' 
SELECT DISTINCT lesson_id, question_id FROM lesson_practice_questions as lpq

INNER JOIN 
SELECT DISTINCT topic_id, lesson_id FROM chapter_lessons as cl
WHERE cl.topic_id==2 
ON cl.lesson_id = lpq.lesson_id 

INNER JOIN 
SELECT DISTINCT question_id, subject_id, question_type_id, knowledge_type_ids complexity_level FROM questions as q
ON q.question_id = lpq.question_id;'''

cur.execute(sql)

非常感谢 @eshirvana 抽出时间提供帮助!

为将来的 stackoverflow 参考提供模糊错误解决方案的完美解决方案:

sql = '''SELECT
    lpq.lesson_id, cl.lesson_id,
    topic_id,
    q.question_id, lpq.question_id,
    subject_id,
    question_type_id,
    knowledge_type_ids,
    complexity
FROM  lesson_practice_questions as lpq
INNER JOIN chapter_lessons as cl on cl.topic_id = 2 and cl.lesson_id = lpq.lesson_id
INNER JOIN questions as q ON q.question_id = lpq.question_id;'''

【问题讨论】:

  • 是sqlite还是mysql?仅 ag 您正在使用的数据库
  • 嗨,它是 SQLITE

标签: python sql sqlite


【解决方案1】:

这是正确的 sql 语法,但是如果这不是正确的输出,您需要提供示例数据和所需的输出:

SELECT
    lpq.lesson_id,
    question_id,
    topic_id,
    lesson_id,
    question_id,
    subject_id,
    question_type_id,
    knowledge_type_ids,
    complexity_level
FROM  lesson_practice_questions as lpq
INNER JOIN chapter_lessons as cl on cl.topic_id = 2 and cl.lesson_id = lpq.lesson_id
INNER JOIN questions as q ON q.question_id = lpq.question_id;

【讨论】:

  • 谢谢。我收到此错误:“OperationalError:不明确的列名:lesson_id”。我将使用 DB 的屏幕截图编辑问题。谢谢!
  • @skwolvie 在列名前面使用表别名,就像我为第一列所做的一样(请参阅更新的 asnwer)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 2012-07-28
  • 2015-05-08
  • 2011-12-26
  • 2023-04-06
  • 2017-02-20
  • 1970-01-01
相关资源
最近更新 更多