带有主表

时间:2016-01-17 12:52:35

标签: php mysql database

在我的数据库中,我有一个job表,你可以说它是我数据库中的主表。我有一个名为 category 的列,此列指向一个名为 category 的表,该表包含不同的类别。

提出外键的概念,我将列类别转换为外键,查看类别表。

Foreign Key

在我的类别表中,我确保它指向ID。 Implementation of FK

当我运行我的网页时,它会打印出类别列中的值1,理论上它应该不打印" Driving" enter image description here

function getJobDetails($job,$cat){
//this connects to the database
include "connectToDatabse.php";

//show me the results from job, where category is like cat vice versa
$results = $pdo->query("SELECT * FROM job WHERE category LIKE '$cat%' OR title LIKE '$job'");
$str = "<table>";                       //prints out table
$str .= "<td>" ."Title" . "</td>";      //first row
$str .= "<td>" ."Reference" . "</td>";  //N row...
$str .= "<td>" ."Salary(£)" . "</td>";
$str .= "<td>" ."Description" . "</td>";
$str .= "<td>" ."Category" . "</td>";
foreach ($results as $row) {
    $ref = $row['reference'];
    $link = "<form method='get' action='apply.php' name='edit'>
         <input type='hidden' name='referenceNumber' value='$ref'>
         <input type='submit' value='$ref'>
    </form>";
    $str .= "<tr>";
    $str .= "<td>" . $row['title'] . "</td>";
    $str .= "<td>" . $row['reference'] . "</td>";
    $str .= "<td>" . $row['salary'] . "</td>";
    $str .= "<td>" . $row['description'] . "</td>";
    $str .= "<td>" . $row['category'] . "</td>";
    $str .= "<td> " .$link . "</td>";
    $str .= "</tr>";
}
$str .= "</table>";
echo $str;
}

上面的代码是一个返回作业表中数据的函数。

编辑:引用问题,因为categories列指向类别表,它是否应该将数据引回到作业表?

1 个答案:

答案 0 :(得分:3)

不,不应该。你错过了解外键。他们不会改变你得到的数据,他们只告诉数据库系统'嘿,这引用其他东西,如果这个其他条目被更新或删除,请做X(更新,删除,...... )这个条目在这里'。您仍然需要联接才能获得预期结果:

SELECT ..., category.title FROM job LEFT JOIN category ON category.id = job.category