简体   繁体   English

显示多个表的结果 SQL/PHP

[英]Displaying results from multiple tables SQL/PHP

I currently have a database with 12 tables.我目前有一个包含 12 个表的数据库。 I am doing a php query to pull the information from the database but I am not getting anything displayed.我正在执行 php 查询以从数据库中提取信息,但没有显示任何内容。 The query alone bridges all the tables starting with table schedule that have a foreign key related.单独的查询桥接了所有以表schedule开头的表,这些表具有相关的外键。 Should I need to start the query from the table class and bridge with other tables?我是否需要从表class开始查询并与其他表桥接?

TABLE DESIGN- PICTURE 桌子设计-图片

If you like to duplicate my design- QUERY如果你想复制我的设计 - QUERY

$query = ("SELECT  class_name, class_caption, class_credit_hours, class_description
                FROM schedule 
                INNER JOIN section 
                ON class.id = section.class_id
                INNER JOIN faculty
                ON faculty.id = section.faculty_id
                INNER JOIN faculty
                ON faculty.id = office_hours.faculty_id
                INNER JOIN faculty_titles
                ON faculty_titles.faculty_id = faculty.id
                INNER JOIN faculty_education
                ON faculty_education.faculty_id = faculty.id 
                INNER JOIN section
                ON section.faculty_id = faculty.id 
                INNER JOIN class
                ON class.id = section.class_id
                INNER JOIN major_class_br
                ON major_class_br.class_id = class.id
                INNER JOIN  major_minor 
                ON major_class_br.major_minor_id = major_minor.id                
                 ");
      //execute query
      $result = mysql_query($query);

     if ($result){

    $totalhours = 0;

    while ($row = mysql_fetch_assoc( $result ))
    {  
        print "<b>" . $row['class_name'] . "</b><br>";
        print $row['class_caption'] . "<br>";
        print $row['class_description'] . "<br>";
        print $row ['class_credit_hours'] . "hrs. <br>";
        print "------------------------------<br />";
        $totalhours += $row['class_credit_hours']; 
    }   
    }

SQL fiddle query SQL 小提琴查询

SELECT  class_name, class_caption, class_credit_hours, class_description
             FROM schedule 
            INNER JOIN section 
            ON class.id = section.class_id

Right here there's a problem: you are doing a INNER JOIN using the field 'class.id' but the table 'class' isn't in either side of the JOIN.这里有一个问题:您正在使用字段“class.id”进行内部联接,但表“类”不在联接的任一侧。 So it won't work.所以它不会工作。

The query should start like this:查询应该像这样开始:

SELECT  class_name, class_caption, class_credit_hours, class_description
             FROM class
            INNER JOIN section 
            ON class.id = section.class_id

And then do the JOIN with the table 'schedule' with the table it shares a common index (I guess it would be class).然后使用表'schedule' 与它共享一个公共索引的表(我猜它是类)执行JOIN。

The complete query should be something like this:完整的查询应该是这样的:

SELECT  class.class_name, class.class_caption, class.class_credit_hours, class.class_description
            FROM class
            INNER JOIN section 
            ON class.id = section.class_id
            INNER JOIN faculty 
            ON faculty.id = section.faculty_id OR faculty.id = office_hours.faculty_id
            INNER JOIN faculty_titles
            ON faculty_titles.faculty_id = faculty.id
            INNER JOIN faculty_education
            ON faculty_education.faculty_id = faculty.id 
            INNER JOIN major_class_br
            ON major_class_br.class_id = class.id
            INNER JOIN major_minor 
            ON major_class_br.major_minor_id = major_minor.id
            INNER JOIN sched_sect_br 
            ON sched_sect_br.section_id =  section.id
            INNER JOIN schedule
            ON schedule.id = sched_sect_br.schedule_id
            INNER JOIN semester
            ON semester.id = schedule.semester_id
            INNER JOIN office_hours
            ON schedule.id = office_hours.schedule_id AND faculty.id = office_hours.faculty_id

This query gets info from all the tables you have in your graph, aside from the event table, that isn't related to any other.此查询从您在图表中拥有的所有表中获取信息,除了事件表之外,与任何其他表都不相关。 But still this query should have more fields on the SELECT (you are only selection fields from the class table, I understand you'd want data from the other 10 tables as well), to do this simple add 'tablename.field' to the list of fields from the SELECT.但是这个查询仍然应该在 SELECT 上有更多的字段(你只是类表中的选择字段,我知道你也想要其他 10 个表中的数据),要做到这一点,只需将“tablename.field”添加到SELECT 中的字段列表。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM