Autor | Zpráva | ||
---|---|---|---|
Jula Profil * |
#1 · Zasláno: 23. 6. 2013, 17:46:45
Dobrý den,
na SQL jsem nikdy nebyl odborník a ani nebudu, vše co jsem dosud potřeboval jsem vždy udělal, ale momentálně si vážně nevím rady a musím se tedy obrátit na někoho zkušenějšího. Mám 3 tabulky z prestashopu - ps_order_history(ps_order_state, order_id), ps_customers(name, email, ...), ps_orders(..., customer_id). A potřebuji postupovat následovně. Z tabulky ps_order_history vyberu 5 posledních objednávek, které mají ps_order_state 14,2,5 nebo 7. To ještě zvládnu, ale potom už neumím k tomu přiřadit určitou objednávku a informace uživatele. Mohl by mi někdo prosím poradit? |
||
Alphard Profil |
#2 · Zasláno: 23. 6. 2013, 17:58:31
select ... from ps_order history h left join ps_orders o on o.id = h.order_id left join ps_customers c on o.customer_id = c.id |
||
Tori Profil |
#3 · Zasláno: 23. 6. 2013, 18:07:25
Anebo tohle?
select ... from (select poslednich 5 objednavek z ps_order_history) h left join ps_orders ... -- dál jako [#2] |
||
Jula Profil * |
#4 · Zasláno: 23. 6. 2013, 18:20:53
Skvělý hoši, moc děkuji, poskládal jsem to následovně -
select orders.id_customer, h.id_order, h.id_order_state, customers.email from (select id_order, id_order_state from ps_order_history ORDER BY id_order DESC LIMIT 5) h left join ps_orders orders on orders.id_order = h.id_order left join ps_customer customers on customers.id_customer = orders.id_customer Ještě se zeptám, jak zamezím duplikacím z ps_order_history, je tam přesný postup dané objednávky a stává se, že za sebou jsou třeba 3 stavy, potřebuji jen ten poslední. Distinct nefunguje a group by s order by dohromady nejde. |
||
Tori Profil |
#5 · Zasláno: 23. 6. 2013, 18:29:43
Asi bych zkusila pro začátek něco takového a pak to pomocí EXPLAIN ladila: (nejsem jista, jestli to bude fungovat, nezkoušela jsem to)
select orders.id_customer, h.id_order, h.id_order_state, customers.email from (select id_order, id_order_state from ps_order_history inner join (select id_order, max(date_add) as date_add from ps_order_history group by id_order ORDER BY id_order DESC LIMIT 5 ) h2 using(id_order, date_add) ) h left join ps_orders orders on orders.id_order = h.id_order left join ps_customer customers on customers.id_customer = orders.id_customer |
||
Jula Profil * |
#6 · Zasláno: 23. 6. 2013, 18:37:38
Tori:
Funguje to bezvadně, moc děkuji. |
||
Časová prodleva: 11 let
|
0