DibiDataSource Duplicate column name rubrika: Programování: PHP

3 matous.nemec
položil/-a 24.8.2014

Mám takový problém s DibiDataSource. Mám SQL dotaz:

SELECT * , e.email AS from_email 
FROM email_template AS et JOIN email AS e USING (`email_id`) 
LEFT JOIN email_template_lang AS etl ON (`et`.`email_template_id` = `etl`.`email_template_id` && `etl`.`lang_id` = 2)

Když to vrátím jako DataSource a zavolám si na tom ->count nebo ->getTotalCount, tak celý dotaz obalí do "SELECT COUNT(*) FROM (můj SQL) t", takže to vypadá takhle:

SELECT COUNT(*) FROM (
 
SELECT * , e.email AS from_email 
FROM email_template AS et JOIN email AS e USING (`email_id`) 
LEFT JOIN email_template_lang AS etl ON (`et`.`email_template_id` = `etl`.`email_template_id` && `etl`.`lang_id` = 2)
 
) t

Při vykonání vrátí MySQL error Duplicate column name 'email_template_id'. Napadá někoho nějaké řešení?

Funguje to s USING(email_template_id), ale já potřebuji joinovat i přes lang_id, potřebuji vracet NULL ve sloupcích, pokud lang tabulka v daném jazyce neexistuje.

odkaz Vyřešeno
3 matous.nemec
odpověděl/-a 24.8.2014

Tak si rovnou sám odpovím, jakmile jsem to sem zadal, tak mi došlo, že select s count(*) bude mít problém s hodnotami, které vrací můj SQL, takže jsem omezil výběr pouze na data z hlavní tabulky a z lang tabulky beru pouze subject a běží to :-)

SELECT 
 
    et.* , 
    `etl`.`subject` , 
    e.email AS from_email 
 
FROM email_template AS et JOIN email AS e USING (`email_id`) 
LEFT JOIN email_template_lang AS etl ON (`etl`.`email_template_id` && `etl`.`lang_id` = 2)

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.