0

次のテーブルがあります。

1) tbl_entries :

+----------+-------------+-------------------+
| entry_id | entry_title | entry_category_id |
+----------+-------------+-------------------+
| 10       | Entry 1     | 3                 |
| 20       | Entry 2     | 2                 |
| 30       | Entry 3     | 2                 |
| 40       | Entry 4     | 5                 |
+----------+-------------+-------------------+

2) tbl_categories

+-------------+---------------+
| category_id | category_name |
+-------------+---------------+
| 1           | Animal        |
| 2           | People        |
| 3           | Gadgets       |
| 4           | Entertainment |
| 5           | Business      |
+-------------+---------------+

2) tbl_categories_secondary

+-------------+---------------+
| cs_entry_id | cs_category_id|
+-------------+---------------+
| 10          | 5             |
| 20          | 1             |
| 20          | 3             |
| 20          | 5             |
| 40          | 1             |
| 40          | 4             |
+-------------+---------------+

すべてのエントリをプライマリおよびセカンダリ カテゴリ (アルファベット順およびコンマ区切り) と一緒にクエリして、次のようにします。

+-------------+---------------------------------+
| title       | categories                      |
+-------------+---------------------------------+
| Entry 1     | Business,Gadgets                |
| Entry 2     | Animal,Business,Gadgets,People  |
| Entry 3     | People                          |
| Entry 4     | Animal,Business,Entertainment   |
+-------------+---------------------------------+

これは、私がほぼ1日で試したことです。

SELECT tbl_entries.entry_title AS title, addCats.more_categories AS categories
FROM tbl_entries,
(
    SELECT cs_entry_id, GROUP_CONCAT(category_name SEPARATOR ',') AS more_categories
    FROM tbl_categories
    INNER JOIN tbl_categories_secondary
        ON tbl_categories.category_id = tbl_categories_secondary.cs_category_id
    GROUP BY cs_entry_id
) addCats
INNER JOIN categories
    ON tbl_entries.entry_category_id = tbl_categories.category_id

私の問題は、エントリのプライマリ カテゴリとすべてのセカンダリ カテゴリを取得し、上で説明したようにそれらを 1 つの列に混在させる方法です。

どんな助けでも大歓迎です:)

4

1 に答える 1

0

以下のようなものを試してください。tbl_categories のエイリアスを tc1 として作成し、参加しました

select tbl_entries.entry_title, concat(group_concat(tbl_categories.category_name),group_concat(tc1.category_name)) 内部結合 tbl_categories on tbl_entries.entry_category_id=tbl_categories.category_id 内部結合 tbl_categories_secondary on tbl_categories_secondary.cs_entry_id =tbl_categories.entry_1 結合 ast_categories.entry_1 .category_id =tbl_categories_secondary.cs_category_id tbl_entries.entry_title によるグループ

于 2015-10-22T04:19:16.423 に答える