0

SQL言語の書き方を学び始めましたが、以下の問題に行き詰まりました: 今、「データ」という名前のテーブルにデータがあります

+------+-------+-------+-------+-------+
| id   | name  | type1 | type2 | type3 |
+------+-------+-------+-------+-------+
|    1 | Cake  | a     | b     | f     |
|    2 | Coca  | a     | d     | c     |
|    3 | Ice   | c     | b     | a     |
|    4 | Wine  | c     | e     | d     |
|    5 | Salad | c     | f     | a     |
|    6 | Water | d     | e     | f     |
+------+-------+-------+-------+-------+

type1、type2、type3 に存在するすべての型をカウントする SQL ステートメントを書きたいので、取得したい結果は次のとおりです。

+------+------+
| type | count|
+------+------+
|    a | 4    |
|    b | 2    |
|    c | 4    |
|    d | 3    |
|    e | 2    |
|    f | 3    |
+------+------+

列の種類と数が正確にわからないと仮定すると、この問題の対処方法を教えていただけますか? ああ、SQLではなくレベルのプログラミング言語で解決する必要がありますか? Symfony2 で php を使用しています。

前もって感謝します、

4

2 に答える 2

8
SELECT  type, COUNT(*) count
FROM    
    (
        SELECT  type1 type FROM data
        UNION ALL
        SELECT  type2 type FROM data
        UNION ALL
        SELECT  type3 type FROM Data
    ) AS subquery
GROUP   BY type

出力

╔══════╦═══════╗
║ TYPE ║ COUNT ║
╠══════╬═══════╣
║ a    ║     4 ║
║ b    ║     2 ║
║ c    ║     4 ║
║ d    ║     3 ║
║ e    ║     2 ║
║ f    ║     3 ║
╚══════╩═══════╝
于 2013-04-19T16:17:30.143 に答える