1

サブクエリを使用して Mysql の結果に列を追加しようとしています。テーブル 'Cars' とテーブル 'Cars usage' があるとします。Table Cars には列 "serial_number" があり、Cars usage テーブルには列 "serial_number" があります。同様に:だから私は車の名前を最初の列として、車の使用法を2番目の列として結果を生成したい:

Table cars:
-model
-serial_number

Table carsusage
-date
-serial_number

私が達成したいことは次のようになります:

Model | Usage count
--------------------
|bar   | 1500       |
|foo   | 700        |

理想的には、サブクエリが必要です。これは、車のテーブルをクエリしているときに、車の使用状況テーブルのカウントにクエリを吐き出します。

SELECT model, serial_number AS sn,(SELECT COUNT(serial_number) FROM cars_usage WHERE serial_number=sn) FROM cars;

したがって、基本的には、serial_number AS sn をローカル変数として使用し、カウント操作の結果を 2 番目の列として追加したいと考えています。何かアドバイス?ここでデータベースにクエリを実行した経験はあまりありません。

どうも

4

2 に答える 2

1

次のようなことを試してみませんか

SELECT model, 
    serial_number AS sn,
    (SELECT COUNT(serial_number) FROM cars_usage cu WHERE cu.serial_number=c.serial_number) 
FROM  cars c;

テーブルのエイリアスを指定し、フィールドにエイリアスのプレフィックスを付ける場所。

LEFT JOIN を試すこともできます (内部結合には注意してください。使用法がない場合、その車の 0 エントリが返されないためです)。

select c.model, 
       c.serialnumber sn,
       count(cu.*) 
from   cars c LEFT join 
       carsusage cu on c.serial_number=cu.serial_number
GROUP BY  c.model, 
          c.serialnumber
于 2013-09-10T08:53:55.667 に答える
1

シリアル番号ごとに使用する場合:

select model, serial_number, count(*) from cars inner join carsusage on cars.serial_number=carsusage.serial_number where cars.serial_number=$var group by 1,2

または、モデルごとの使用が必要な場合:

select model, count(*) from cars inner join carsusage on cars.serial_number=carsusage.serial_number where cars.serial_number=$var group by 1
于 2013-09-10T08:54:27.870 に答える