Mam dwie tabele, A vehicle
tabeli z kolumnami:Jak uzyskać liczbę powiązanych wierszy w lewym złączeniu w MySQL?
id
stock
year
make
model
i images
tabela z kolumnami:
id
vehicle_id
name
caption
default tinyint(1)
staram się notować informacje pojazdu, jego domyślny obraz, a całkowita liczba obrazów pojazdu. Obecnie używam następujący SELECT
oświadczenie:
SELECT vehicle.id, vehicle.stock, vehicle.year,
vehicle.make, vehicle.model, images.name,
COUNT(images.id)
FROM vehicle
LEFT JOIN images
ON vehicle.id = images.vehicle_id
początkowo używał:
ON vehicle.id = images.vehicle_id AND images.default = 1
ale potem liczyć obrazy byłyby tylko 1 lub 0 w zależności czy istnieje domyślny obraz w bazie danych. Próbowałem używać UNION
i innych instrukcji SELECT
, ale nadal nie mogę uzyskać prawidłowego wyniku. Czy muszę używać dwóch instrukcji SELECT
lub czy istnieje inny sposób na obsłużenie go za pomocą JOIN
lub UNION
?
zgadzam. Byłby to właściwy sposób na zrobienie tego. Mogę wymyślić inny sposób (polegający na użyciu podkwerendy zamiast tabeli obrazów prostych), ale jest on hacky i ohydny (i tylko dla zabawy). To jest właściwy sposób, aby to zrobić. – MBCook
+1 za to. Oczyściłem go trochę, aby pozbyć się zwoju. – TheTXI
Czy lepiej używać COUNT (id) zamiast COUNT (*), więc nie wybieram wszystkich kolumn? –