0

我正在使用 CodeIgniter

我有一个包含三个表的数据库,分别称为类别、工厂和工厂类别

在我的类别表中,我有以下行:

idCategories
Categorie
idFactories

在我的工厂表中,我有以下行:

idFactories
Factoryname
Postcode
Country
Telephone number
Email
Website
Profile
Adress

在我的工厂类别中,我有以下行:

id
idFactories
idCategories
Factorycategory

我想,当我点击下图中的一个类别时,工厂会出现在该特定类别中。

工厂可以属于多个类别。

那么,当我单击一个类别时,如何在这些表之间建立关系以获得这些结果。

例子

我如何使用 mysql 数据库和 phpmyadmin 2.8 来管理它?

我在谷歌上搜索但找不到东西。

4

2 回答 2

1

首先,改变你的数据库设计......

table factories
-----------------
idFactories
idCategories (int) <---- add this field
Factoryname
Postcode
...

然后,查询属于特定类别的工厂。通过idCategories链接传递:

创建链接:

// sql to get all categories from the DB
$sql="SELECT * FROM categories ORDER BY Categorie"    

// --- insert your code to pull the data from your DB here ---

// building your links on the left column
// assuming all rows from the sql above are in array $categories 
foreach ($categories as $cat) 
    echo '<a href="thispage.php?id='.$cat['idCategories'].'">'.$cat['Categories'].'</a>';

根据点击的类别显示工厂......在文件的开头:

if (isset($_GET['id']) && intval($_GET['id'])>0) 
    $id=intval($_GET['id']);
else $id=0;

if ($id>0) {
    $sql="SELECT * FROM factories WHERE idCategories=$id";
    // --- insert your code to pull the data from your DB here ---
    // store all the rows in array $factories
}

输出工厂:

if ($id>0) {
    foreach ($factories as $fac) {
       // code for echoing the data
    }
} else {
    echo "select a category on the left to show the factories...";
}

糟糕,我看到您在问题中更改了类别和工厂之间的关系。基本上,技术是相同的,只是 sql 会改变。

于 2013-03-01T10:29:25.347 回答
0

您可能正在寻找INNER JOIN

SELECT
    fa.idFactories,
    fa.Factoryname,
    fa.Postcode,
    fa.Country,
    fa.Telephonenumber,
    fa.Email,
    fa.Website,
    fa.Profile,
    fa.Adress,
    fc.Factorycategory,
    ca.Categorie
FROM
    `factories` as `fa`
INNER JOIN
    `factorycategories` as `fc`
ON
    fa.idFactories = fc.idFactories
INNER JOIN
    `categories` as `ca`
ON
    ca.idCategories = fc.idCategories
WHERE
    ca.Categorie = 'MyCategory'
于 2013-03-01T10:15:39.760 回答