不确定在执行SELECT(CASE .. END)的情况下如何检查查询的哪一部分

时间:2018-10-27 18:06:51

标签: php mysql sql

因此在我的数据库中,我有4个单独的表。主表由ID,名称和一些其他信息组成。主要ID由其他2个表引用。例如,表1是具有学生ID /姓名/年龄的学生列表。表2由与科学专业相关的学生ID /信息组成,表3由与心理学专业相关的学生ID /信息组成。表4包含与心理学专业相关的其他信息。

我需要编写一个PHP页面,该页面接收一个学生ID,并首先打印出学生的姓名/年龄,然后,如果它存在于表2中,需要打印一组不同的信息,如果表3中存在该信息,则需要打印另一组信息(如果选择表3,则需要从表4中打印信息)。

< ul>
  • 要做到这一点,首先,我编写了一个SQL查询来打印两种情况下通用的通用信息。
  • 对于问题的第二部分,我计划编写SQL查询的方式如下:
  • SELECT( CASE WHEN :variable IN
             (SELECT student_id from Table 2) 
              THEN
              ......
              ELSE
             ...
            END)
    

    我的问题是,如何检查ID是在查询的第一种情况下还是在第二种情况下,以便可以相应地打印信息。另外,如果ID在第二个查询中,则需要从新表中进一步打印信息。我该如何检查相同内容?

    更新:简化的问题。如果我的ID在表2中,则选择列:A,B,C。如果在表3中,请选择列:D,E,F。查询之后,我需要根据ID所在的表来打印A,B,C或D,E,F。关于检查相同的内容

    1 个答案:

    答案 0 :(得分:0)

    SQL在其输出字段列表中静态定义。如果您需要问题中所述的字段,则必须提供带有别名的字段列表,以表示不同的表,在以下一行:

    <head>
    <!-- jQuery reference -->
    <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <!-- jQuery UI reference -->
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    </head>
    <body></body>
    

    也许您将不得不使用联接而不是case语句来重构查询以满足这些条件。

    本质上,在查询的答案中,您不必真正担心查询的来源,或者如果相关,则触发多个查询更为传统(例如,一个接一个地进行查询,检查条件是否满足,然后有条件地执行下一个)。