同じ ID を持つ別のテーブルからデータを選択する

TH

mb_categorymb_items の2 つのテーブルがあります。mb_category割り当てられているカテゴリと同じ ID を持つ mb_items からアイテムを選択しようとしています。

mb_category には、id と category の 2 つの行があります。
mb_items には 4 つの行があります: id、item_name、item_price、および mb_category_id

やりたいことは、mb_items のすべてのアイテムを対応するカテゴリ ID で選択し、正しいドロップダウンにエコーすることです。

私が現在持っているものは次のとおりです。

<ul class="nav">
    <?php
        $category = $db->read('mb_category', '*', '', 'ORDER BY id ASC');

    //  echo $category["count"] . "<br />";
    //  print_r($category);
                foreach ($category["results"] as $row) {
    ?>
    <li class="button-dropdown">
        <a href="javascript:void(0)" class="dropdown-toggle">
            <?php echo $row->category; ?> <span>▼</span>
                </a>
                    <ul class="dropdown-menu">
                        <?php
                            $cid = $db->read('mb_category', 'id', '', '');

                            $item = $db->read('mb_items', '*', 'mb_category_id="$cid"', '');

//                          var_dump($item);
//                          echo $item["count"] . "<br />";
//                          print_r($item);

                            foreach ($item["results"] as $irow) {
                                ?>
                                <li>
                                    <a href="#">
                                        <?php
                                        echo $irow->item_name;
                                        ?>
                                    </a>
                                </li>
                                <?php
                            }
                            ?>
                        </ul>
                    </li>
                    <?php
                }
                ?>

そして、これは私のSELECTです:

public function read($table_name, $cols, $where = NULL, $limit = NULL) {
        //GET $cols FROM $table_name WHERE $where returns 0 for false and fetch_object() for true
        $query = "SELECT " . $cols . " FROM " . $table_name;

        if ($where) {
            $query .= " WHERE " . $where;
        }

        if ($limit) {
            $query .= " " . $limit;
        }

        //echo $query;

        $sql = $this->query($query);

        if ($sql) {
            $data = array();
            $data['count'] = $sql->num_rows;
            while ($row = $sql->fetch_object()) {
                $data['results'][] = $row;
            }
            return $data;
        }
        return false;
    }
}
ミスター

私はあなたに 2 つのことを提案できます (私があなたに与えているコードをテストしたわけではありません。これは単にアイデアを示すためです)。

1) リクエストが多すぎます。必要なのは 1 つだけです。

SELECT c.id AS category_id, c.category AS category_name, i.id AS item_id, i.item_name
FROM mb_category c
LEFT JOIN mb_items i ON c.id = i.mb_category_id

2) データをフォーマットし、それを使用してリストを表示します。

<?php
// format data
$categories = [];
foreach ($category["results"] as $row) {
    if (empty($categories[$row[category_id]])) {
        $categories[$row[category_id]] = [
            'id'    => $row[category_id],
            'name'  => $row['category_name'],
            'items' => [],
        ];
    }

    if (!empty($categories[$row[item_id]])) {
        $categories[$row[category_id]]['items'][] = [
            'id'   => $row['item_id'],
            'name' => $row['item_name'],
        ];
    }
}
?>

<ul class="nav">
    <?php
    // display data
    foreach ($categories as $categoryId => $category) {
    ?>
        <li class="button-dropdown">
            <a href="javascript:void(0)" class="dropdown-toggle">
                <?php echo $category['name']; ?> <span>▼</span>
            </a>
            <ul class="dropdown-menu">
                <?php foreach ($category['items'] as $item) { ?>
                    <li>
                        <a href="#">
                            <?php
                            echo $item['name'];
                            ?>
                        </a>
                    </li>
                <?php } ?>
            </ul>
        </li>
    <?php } ?>
</ul>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じIDを持つ2つのテーブルからすべての行を選択します

分類Dev

テーブルからデータを選択し、同じIDの数量を合計します

分類Dev

同じIDを持たない3つのテーブルからデータを読み取る方法

分類Dev

同じID#を使用して3つのテーブルから行を選択するより高速な方法

分類Dev

同じIDを持つ別のテーブルの行が別の列に特定の値を持つ場合を除いて、テーブルからすべての行を選択します

分類Dev

同じ外部キーを持つすべての行の中で行のIDが最も高いテーブルからすべてを選択します

分類Dev

codeigniter:同じIDを持つ2つのテーブルにデータ/レコードを挿入する

分類Dev

同じIDと名前を持つ同じテーブルの両方の一致するレコードを選択する方法

分類Dev

同じIDに基づいて2つのテーブルからすべてを選択します

分類Dev

同じIDを持つ異なるテーブルからすべてのデータを取得するSQLクエリ

分類Dev

同じIDを持つ異なるテーブルからすべての値を更新します

分類Dev

同じIDを持つ別のテーブルに挿入するときにデータをマージします

分類Dev

PDO / phpを使用して、同じIDを持つ2番目のテーブルからデータをどのようにプルしますか?

分類Dev

日付が同じ場合は、最大日付と最大IDを持つテーブルからIDを選択します

分類Dev

テーブル内の別の列で ID が同じで値が異なる行を選択する

分類Dev

同じ自動生成IDを持つ2つのテーブル

分類Dev

同じEmailAddress列の値を持つIDを選択する

分類Dev

2つの異なるテーブルから値を選択し、同じIDの値を行に出力します

分類Dev

idのパラメータを使用して同じテーブルから2つの値を取得する方法

分類Dev

同じIDがあるテーブルから別のテーブルに値をコピーします

分類Dev

Django ORM:テーブルBで同じid(FK)を持っている場合は、テーブルAから行を選択します。条件を満たしている場合は、Aの行が選択されます。

分類Dev

同じIDテーブルを持つ複数のテーブルからすべての行を出力するSQLクエリは何ですか?

分類Dev

ID番号からデータベースから同じphotograph_idを持つ画像または変数をいくつか選択したい

分類Dev

ORDERBY異なるテーブルからの同じオプションIDを持つ行の数

分類Dev

特定のステータスを持たないレコード、複数のステータスを持つ同じIDを持つデータを選択するためのMySQLクエリ

分類Dev

Apache ModSecurity:同じIDエラーを持つ別のルール

分類Dev

同じIDのpysparkデータフレームを持つ別の列に異なる値を表示する

分類Dev

同じIDを持つ別のテーブルの最高平均で行を並べ替える方法

分類Dev

同じIDを持つ複数の値を選択します

Related 関連記事

  1. 1

    同じIDを持つ2つのテーブルからすべての行を選択します

  2. 2

    テーブルからデータを選択し、同じIDの数量を合計します

  3. 3

    同じIDを持たない3つのテーブルからデータを読み取る方法

  4. 4

    同じID#を使用して3つのテーブルから行を選択するより高速な方法

  5. 5

    同じIDを持つ別のテーブルの行が別の列に特定の値を持つ場合を除いて、テーブルからすべての行を選択します

  6. 6

    同じ外部キーを持つすべての行の中で行のIDが最も高いテーブルからすべてを選択します

  7. 7

    codeigniter:同じIDを持つ2つのテーブルにデータ/レコードを挿入する

  8. 8

    同じIDと名前を持つ同じテーブルの両方の一致するレコードを選択する方法

  9. 9

    同じIDに基づいて2つのテーブルからすべてを選択します

  10. 10

    同じIDを持つ異なるテーブルからすべてのデータを取得するSQLクエリ

  11. 11

    同じIDを持つ異なるテーブルからすべての値を更新します

  12. 12

    同じIDを持つ別のテーブルに挿入するときにデータをマージします

  13. 13

    PDO / phpを使用して、同じIDを持つ2番目のテーブルからデータをどのようにプルしますか?

  14. 14

    日付が同じ場合は、最大日付と最大IDを持つテーブルからIDを選択します

  15. 15

    テーブル内の別の列で ID が同じで値が異なる行を選択する

  16. 16

    同じ自動生成IDを持つ2つのテーブル

  17. 17

    同じEmailAddress列の値を持つIDを選択する

  18. 18

    2つの異なるテーブルから値を選択し、同じIDの値を行に出力します

  19. 19

    idのパラメータを使用して同じテーブルから2つの値を取得する方法

  20. 20

    同じIDがあるテーブルから別のテーブルに値をコピーします

  21. 21

    Django ORM:テーブルBで同じid(FK)を持っている場合は、テーブルAから行を選択します。条件を満たしている場合は、Aの行が選択されます。

  22. 22

    同じIDテーブルを持つ複数のテーブルからすべての行を出力するSQLクエリは何ですか?

  23. 23

    ID番号からデータベースから同じphotograph_idを持つ画像または変数をいくつか選択したい

  24. 24

    ORDERBY異なるテーブルからの同じオプションIDを持つ行の数

  25. 25

    特定のステータスを持たないレコード、複数のステータスを持つ同じIDを持つデータを選択するためのMySQLクエリ

  26. 26

    Apache ModSecurity:同じIDエラーを持つ別のルール

  27. 27

    同じIDのpysparkデータフレームを持つ別の列に異なる値を表示する

  28. 28

    同じIDを持つ別のテーブルの最高平均で行を並べ替える方法

  29. 29

    同じIDを持つ複数の値を選択します

ホットタグ

アーカイブ