を最適化する方法を私は2つのテーブルを持っています。 vehicle_c2c_car_sourceの構造:私のmysqlのクエリ
/********************************/
`id` int(11) NOT NULL AUTO_INCREMENT
`title` varchar(200) NOT NULL DEFAULT
/******************************/
vehicle_c2c_appoint_task
/******* **********************/
`id` int(11) unsigned NOT NULL AUTO_INCREMENT
`car_source_id` int(11) NOT NULL DEFAULT '0'
`status` tinyint(4) NOT NULL DEFAULT '0'
vステータスの値は0,1,2とすることができます。 1つのcar_source_idは多くのステータスを持つことができます。
最初の目標は、ステータスレコードの量が3未満
第二の目標は、ステータスが1
に等しいときに、ステータスレコードの量を得ることですすべてcar_sourceを得ることです出力する必要があることのようなもの:
22222(ステータスレコードのID)1111(car_source_id)タイトル(タイトル)
私の現在のソリューションを取得する最初である4(ステータス= 1は、ステータスレコードの量)すべて私のcar_source第1の目標を達成し、次いで、第2の目標を達成するためにループ内のテーブルvehicle_c2c_appoint_taskを照会する。ループでは
SELECT cs.id, pt.car_source_id, cs.title,
FROM vehicle_c2c_car_source AS cs
JOIN vehicle_c2c_appoint_task AS pt ON cs.id = pt.car_source_id
WHERE 1
AND pt.appoint_status NOT IN (2,6)
GROUP BY pt.car_source_id HAVING count(pt.car_source_id) < 3
:
SELECT count(*) as count
FROM vehicle_c2c_appoint_task
WHERE status = 1
group by car_source_id
私はループ内でクエリを置くのは良い考えではないと思います。 1つのクエリでどのようにすべての値を取得できますか?
SUM(ステータス= 1)は、おかげでトリックをしました – user3210341