2017-11-08 34 views
1

私のデータベースのいくつかのテーブルから、それらを一緒に結合して仮想テーブルをnodejsプログラムに戻します。MySQLで仮想テーブルを作成する

Project | OS | On 
A   Win  False  
A   Mac  True 
A   Mac  True 
B   Win  True 
B   Win  True 
C   OS  False 

私の質問は次のとおりです。上記のテーブルをこのような仮想テーブルに変換する最も簡単な方法は何ですか?

Project | Win | Mac | True | False 
    A  1 3  2  1 
    B  2 0  2  0 
    C  0 1  0  1 

は、このMySQLのクエリで行われるべき、または初期テーブルが私のプログラムに戻り、そこで編集されると、これを行わなければなりませんか?

+0

は 'GROUP BY'を行います。条件付き集計を行うには、 'case'式を使用します。 – jarlh

答えて

0

あなたはSQLでこれを行うことができます。

SELECT Project, 
    COUNT(CASE OS WHEN 'Win' THEN 1 END) AS Win, 
    COUNT(CASE OS WHEN 'Win' THEN 1 END) AS Mac, 
    COUNT(CASE `On` WHEN 'True' THEN 1 END) AS `True`, 
    COUNT(CASE `On` WHEN 'False' THEN 1 END) AS `False` 
FROM NoOneEverNamesTheirTableInSqlQuestions 
GROUP BY Project 
+0

現在、私は上記の最初のテーブルを生成するクエリを持っています。このSQLをNoOneEverNamesTheirTableInSqlQuestions変数に挿入しました。しかし、SQLでは、このテーブルのエイリアスを作成する必要があると言います。どのように私は同じクエリでこれを行うことができますか? –

+0

テーブルエイリアスの作成方法を尋ねていますか? 'SELECT ... FROM()AS t;' FROM句でサブクエリを使用するたびにテーブルエイリアスを作成する必要があります。 –

+0

はい私はちょうどそれをそのように解決しました。ありがとうございました –

関連する問題