Řazení podle nejnovějšího záznamu z related tabulky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jandik.n
Člen | 41
+
0
-

Ahoj,

mám tabulku „customer“, ke které se mi přes „customer_id“ pojí tabulka „crm_log“, kam se ukládají záznamy, kdy byli zákazníci kontaktováni. Zároveň se mi tam ukládá, kdy je mám znovu kontaktovat.

V šabloně potřebuji zákazníky seřadit podle datumů, které byly vloženy do této propojené tabulky jako poslední.

Dotaz tedy zní, jak mohu záznamy řadit, podle nejnověji vloženého údaje v related tabulce.

Podle následujícího kódu se data seřadí podle nejstaršího záznamu, nikoliv nejnovějšího.

Doufám, že je to srozumitelné, předem díky za rady!

<?php
 $selection = $this->db->table('customer')->select('customer.*')->having('COUNT(:crm_log.customer_id >= 1)');
        $selection->select(':crm_log.future_contact AS future_contact');
        $selection->order('future_contact ASC');
?>

Editoval jandik.n (26. 10. 2015 13:43)

Michal Hlávka
Člen | 190
+
0
-

order DESC?

jandik.n
Člen | 41
+
0
-

emptywall napsal(a):

order DESC?

Tím pouze manipuluji s pořadím již nejstarších záznamů z related tabulky, které se Váží k zákazníkům.

Já ale potřebuji řadit podle nejnovějších záznamů z related tabulky, které se k zákazníkům pojí.

Toto DESC a ASC, jak mám v kódu mi pouze změní pořadí těch samých záznamů (nejstarších), já ale potřebuji ty nejnověji vložené (z related tabulky) a podle těch teprve řadit.

Rozumíme? Pište prosím, pokud to není jasné.

Michal Hlávka
Člen | 190
+
0
-

Můžete sem poslat schéma těch dvou tabulek?

jandik.n
Člen | 41
+
0
-

Zde je schéma: http://www.nk-translators.com/…s/scheme.png

K zákazníkovi se pojí x záznamů v tabulce crm_log.

Potřebuji vždy zjistit nejnovější záznam s ID daného zákazníka v tabulce crm_log a podle atributu „future_contact“ všechny zákazníky seřadit.

V kódu řečeno:

<?php
$this->db->table('customer')->select('customer.*')->order(':crm_log.future_contact');
?>

Ale těch záznamů je tam hodně a ono to seřadí podle toho nejstaršího, nikoliv nejnovějšího.

Je to doufám srozumitelné :-) Díky.

voda
Člen | 561
+
0
-

Takže chceš sezname všech zákazníku s nejnovějším záznamem z crm_log tabulky? Dotaz How do I join the most recent row in one table to another table? na SO je asi přesně to co hledáš. Případně si prohlédni další dotazy z kategorie greatest-n-per-group.

Unlink
Člen | 298
+
+2
-

A takto by to nešlo?

$this->db->table('customer')->select('customer.*')->group(':crm_log.customer_id')->order('MAX(:crm_log.future_contact) DESC');
jandik.n
Člen | 41
+
0
-

Unlink napsal(a):

A takto by to nešlo?

$this->db->table('customer')->select('customer.*')->group(':crm_log.customer_id')->order('MAX(:crm_log.future_contact) DESC');

Ano, to je přesně ono, děkuji, zase jsem se přiučil.