【问题标题】:What SQL Statement can be used to access this information? [closed]可以使用什么 SQL 语句来访问这些信息? [关闭]
【发布时间】:2016-06-16 06:40:06
【问题描述】:

我正在尝试编写可用于网站的PHPSQL 语句,但我无法理解如何访问该信息。

我有以下表格.. 请注意: ACADEMIC_ID & STUDENT_ID 只是 USER_ID 的外键。

我想要的结果是..

当我试图从 PHP 网站的学生视图中访问信息时,我只有以下信息可供使用..

  1. 学生的USER_ID
  2. DEBATE_ID 代表学生目前参加的每场辩论。

所以..

什么 SQL 语句可以用来给出想要的结果?

【问题讨论】:

  • 当图像可以作为文本输入时,请避免使用。

标签: php mysql database-design


【解决方案1】:
SELECT A.TITLE 
    , B.TITLE 
    , C.FIRSTNAME 
    , C.LASTNAME 
    , D.DATE_CREATED 
FROM STARTER_PACT A 
   , UNITS B 
   , USERS C
   , DEBATE D 
   , DEBATE_GROUPS E 
WHERE A.ACADEMIC_ID = C.ID 
AND   B.ACADEMIC_ID = C.ID 
AND   D.ID = E.DEBATE_ID 
AND   E.STUDENT_ID = C.ID 
AND   C.ID = "(USER_ID)" 
AND   D.ID = "(DEBATE_ID)"

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
  • 花点时间阅读帮助中心的editing help。 Stack Overflow 上的格式与其他网站不同。
【解决方案2】:

如果您只有 2 个信息(user.id 和辩论.id),则使用内部联接,流程来自辩论组 -> 辩论 -> starter_packs(来自辩论.starter_pack_id 的联接)-> 单元(starter_packs.academic_id) - > 用户 (stater_packs.academic_id)

SELECT STARTER_PACKS.TITLE, UNITS.TITLE, USERS.FIRSTNAME, USERS.LASTNAME, DEBATE.DATE_CREATED FROM DEBATES_GROUP 
INNER JOIN DEBATES ON DEBATES_GROUP.DEBATE_ID = DEBATES.ID 
INNER JOIN STARTER_PACKS ON STARTER_PACKS.ID = DEBATES.STARTER_PACK_ID 
INNER JOIN UNITS ON STARTER_PACKS.ACADEMIC_IC = UNITS.ACADEMIC_ID 
INNER JOIN USERS ON UNITS.ACADEMIC_ID = USERS.ID
WHERE DEBATES_GROUPS.DEBATE_ID = ? AND DEBATES_GROUPS.STUDENT_ID = ?

希望这可行

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多