Podmínka v joinu (AND) nette database

- Kakaku
 - Člen | 27
 
Zdravím, mám tabulku zákazníků a k nim v tabulce obraty přes relaci N:N obraty za poslední roky. Potřebuji vybrat všechny zákazníky a k nim obraty, ale tak, aby i když ten obrat nebude existovat se přesto ty zákazníci objevili.
$customers->select("*, :customers_yeardata.value, customers.id")->joinWhere(":customers_yeardata.customer_id = customers.id AND :customers_yeardata.year = ?", date("Y"));
Tento kód funguje až na to, že pokud obrat není, tak mi to ty zákazníky nezobrazí. Vygeneruje následující příkaz:
SELECT *, customers_yeardata.value,
customers.id
FROM customers
LEFT JOIN customers_yeardata ON
customers.id =
customers_yeardata.customer_id
WHERE (active = 1) AND (platform = 3) AND
(OZ_id = ‚123‘) AND
(customers_yeardata.customer_id =
customers.id AND
customers_yeardata.year = ‚2017‘)
ORDER BY customer_category ASC, company_name ASC
Já potřebuji tu podmínku customers_yeardata dostat za ten join:
SELECT *, customers_yeardata.value,
customers.id
FROM customers
LEFT JOIN customers_yeardata ON
customers.id =
customers_yeardata.customer_id AND
(customers_yeardata.customer_id =
customers.id AND
customers_yeardata.year = ‚2017‘)
WHERE (active = 1) AND (platform = 3) AND
(OZ_id = ‚123‘)
ORDER BY customer_category ASC, company_name ASC
Jde to vůbec? Díky za pomoc! :)

- norbe
 - Backer | 408
 
Zkus:
$customers->select("*, :customers_yeardata.value, customers.id")->joinWhere(":customers_yeardata", ":customers_yeardata.customer_id = customers.id AND :customers_yeardata.year = ?", date("Y"));
joinWhere má oproti where parametr navíc, aby
věděl ke kterému joinu podmínku připojit. Spíš mne ale překvapilo, že
ti to vygenerovalo funkční dotaz a nehodilo chybu..