0

私は CodeIgniter でワードキングしています

カテゴリ、工場、工場カテゴリと呼ばれる 3 つのテーブルを持つデータベースがあります。

私のカテゴリテーブルには、次の行があります。

idCategories
Categorie
idFactories

私の工場のテーブルには、次の行があります。

idFactories
Factoryname
Postcode
Country
Telephone number
Email
Website
Profile
Adress

私の factorycategories には、次の行があります。

id
idFactories
idCategories
Factorycategory

下の画像に表示されているカテゴリをクリックすると、その特定のカテゴリにある工場が表示されます。

工場は複数のカテゴリに属する​​ことができます。

では、カテゴリをクリックしたときにこれらのテーブル間の関係を作成して結果を取得するにはどうすればよいですか。

例

mysql データベースと phpmyadmin 2.8 でそれを管理するにはどうすればよいですか?

私はグーグルで検索しましたが、何かを見つけることができませんでした。

4

2 に答える 2

1

まず、DBデザインを変更します...

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 に答える