0

現在、MySQL データベースには 5 つのテーブルがあります。それらのいくつかは外部キーを共有し、相互に依存しています。専攻別に授業を表示しています。各クラスはfallspringまたはで教えられall_yearます。id私のデータベースには、 、year、およびsemesterフィールドを持つ semester という名前のテーブルがあります。特に、semesterフィールドは 、、のtinyint3 つの値を持つ0です。これは、またはを意味します。クエリを表示する代わりに表示するとき、または 表示することができますか? 補足: データがクラスター化されないように、各ループの最後にスペースを追加するにはどうすればよいですか?12fallspringall_year012fallspring

0 Fall
1 Spring
2 All-year

PHP

<?


try {

    $pdo = new PDO ("mysql:host=$hostname;dbname=$dbname","$username","$pw");
    } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    exit;
  }
      $query = $pdo->prepare("SELECT course.name, course.code, course.description, course.hours, semester.semester, semester.year
                            FROM course
                            LEFT JOIN major_course_xref ON course.id = major_course_xref.course_id
                            LEFT JOIN major ON major.id = major_course_xref.major_id
                            LEFT JOIN course_semester_xref ON course.id = course_semester_xref.course_id
                            LEFT JOIN semester ON course_semester_xref.semester_id = semester.id");
      $query->execute();

     if ($query->execute()){

      while ($row = $query->fetch(PDO::FETCH_ASSOC)){       
        print $row['name'] . "<br>";
        print $row['code'] . "<br>";
        print $row['description'] . "<br>";
        print $row['hours'] . " hrs.<br>";
        print $row['semester'] . "<br>";
        print $row['year'] . "<br>";
    }
    }
else
    echo 'Could not fetch results.';

      unset($pdo); 
      unset($query);

?>

現在の表示

Computer Programming I
CPSC1400
Introduction to disciplined, object-oriented program development.
4 hrs.
0
2013

欲求表示

Computer Programming I
CPSC1400
Introduction to disciplined, object-oriented program development.
4 hrs.
Fall
2013
4

3 に答える 3

1

semester.semesterクエリを次のように置き換えます。

CASE semester.semester
  WHEN 0 THEN 'Spring'
  WHEN 1 THEN 'Fall'
  WHEN 2 THEN 'All-year'
END semester
于 2012-11-02T04:53:56.673 に答える
1

別のテーブルを作成します。semester_time と言います。

|  id  |  semester_time  |
|  0   |  Fall           |
|  1   |  Spring         |
|  2   |  All_year       |

次に、結合を実行して、semester_time で取得します。

上記の表に基づくクエリの可能なモデル:

SELECT course.name, course.code, course.description, course.hours, semester.semester, semester.year, semester_time 
                            FROM course
                            LEFT JOIN major_course_xref ON course.id = major_course_xref.course_id
                            LEFT JOIN major ON major.id = major_course_xref.major_id
                            LEFT JOIN course_semester_xref ON course.id = course_semester_xref.course_id
                            LEFT JOIN semester ON course_semester_xref.semester_id = semester.id
                            LEFT JOIN semester_time ON semester.semester = semester_time.id

各ループの後にスペースを追加するには


 while ($row = $query->fetch(PDO::FETCH_ASSOC)){       
        print $row['name'] . "<br>";
        print $row['code'] . "<br>";
        print $row['description'] . "<br>";
        print $row['hours'] . " hrs.<br>";
        print $row['semester'] . "<br>";
        print $row['year'] . "<br>";
        echo "<div class='add-space'></div>";
    }

CSSで

.add-space {
margin-bottom: 15px; 
}

ニーズに合わせて値を変更するだけです。

于 2012-11-02T04:59:21.607 に答える
0
while ($row = $query->fetch(PDO::FETCH_ASSOC)){       
        print $row['name'] . "<br>";
        print $row['code'] . "<br>";
        print $row['description'] . "<br>";
        print $row['hours'] . " hrs.<br>";
        print ($row['semester'] == 0) ? "FALL":( ($row['semester'] == 1) ? "Spring" : ( ($row['semester'] == 2) ? "All-year":"")) . "<br>";
        print $row['year'] . "<br>";
        print "<br>------------------------------<br />";
    }
于 2012-11-02T05:04:01.237 に答える