Ich habe zwei Tabellen: vehicle_c2c_car_source und vehicle_c2c_appoint_task. Die Struktur vehicle_c2c_car_source:wie ich meine mysql Abfrage optimieren kann
/********************************/
`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'
Die v alue des Status kann 0,1,2 sein. Eine car_source_id kann viele Status haben.
Das erste Ziel ist es, alle car_source zu erhalten, die die Menge der Statussätze kleiner als 3
Das zweite Ziel, die Höhe der Statussätze zu erhalten ist, wenn der Status auf 1.
gleichDie Ausgabe sollte so etwas wie:
22222 (id von Statussätzen) 1111 (car_source_id) Titel (Titel) 4 (Menge der Statussätze, wenn Status = 1)
Meine aktuelle Lösung zuerst zu bekommen all die car_source dass ich et das erste Ziel und dann vehicle_c2c_appoint_task Tabelle in einer Schleife abfragen, um das zweite Ziel zu erreichen.
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
In der Schleife:
SELECT count(*) as count
FROM vehicle_c2c_appoint_task
WHERE status = 1
group by car_source_id
Ich denke, dass es keine gute Idee ist, die Abfrage in einer Schleife zu setzen. Wie kann ich den gesamten Wert in einer Abfrage erhalten?
SUM (Status = 1) hat den Trick, dank – user3210341