Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Výběr nejstarší objednávky

Aktivity
Avatar
c2807
Člen
Avatar
c2807:25.11.2014 16:18

Ahoj,
mám následující tabulky
CUSTOMERS (ID_CUSTOMER, FIRSTNAME_CUSTOMER, LASTNAME_CUSTOMER)
ORDERS (ID_ORDER, DATE_ORDER, ID_CUSTOMER)
a potřebuji zobrazit nejstarší objednávku od každého zákazníka - poradíte mi někdo EFEKTIVNÍ způsob jak toho docílit?
Děkuji

Editováno 25.11.2014 16:19
 
Odpovědět
25.11.2014 16:18
Avatar
c2807
Člen
Avatar
c2807:25.11.2014 18:27

Jen doplním, že se jedná o SQL dotaz z Oracle 11g a že jsem se zasekl tady:

SELECT customers.las­tname_customer, orders.date_order
FROM customers
JOIN orders
ON customers.id_cus­tomer = orders.id_customer
WHERE orders.date_order IS NOT NULL
ORDER BY orders.date_order

 
Nahoru Odpovědět
25.11.2014 18:27
Avatar
MrPabloz
Člen
Avatar
MrPabloz:25.11.2014 18:41

co takhle použít funkci min? :)

Nahoru Odpovědět
25.11.2014 18:41
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
c2807
Člen
Avatar
Odpovídá na MrPabloz
c2807:25.11.2014 18:59

To jsem zkoušel (v kombinaci s group by) ovšem i tak mi to nefunguje stále správně, ke každému uživateli se zobrazí všechny objednávky kde je nějaké datum a já u každého potřebuji jen tu nejstarší objednávku

SELECT customers.las­tname_customer, MIN(orders.da­te_order)
FROM customers
JOIN orders
ON customers.id_cus­tomer = orders.id_customer
WHERE orders.date_order IS NOT NULL
GROUP by customers.las­tname_customer, orders.date_order
ORDER BY orders.date_order

Editováno 25.11.2014 19:00
 
Nahoru Odpovědět
25.11.2014 18:59
Avatar
Patrik Valkovič:25.11.2014 19:19

LIMIT 0,1? Tedy vybrat jen poslední, když už je to seraženo?

Edit: Promiň, nevšiml jsem si, že chceš vybrat od každého uživatele.
Tak bych dal group by jenom podle customers.las­tname_customer

Editováno 25.11.2014 19:21
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
25.11.2014 19:19
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na c2807
Martin Konečný (pavelco1998):25.11.2014 19:28

Je to takové divné řešení, ale mělo by fungovat.

SELECT id_order, date_order
FROM orders
WHERE id_order IN (
        SELECT id_order
        FROM orders
        INNER JOIN customers ON orders.id_customer = customers.id_customer
        WHERE date_order = (
                SELECT MAX(date_order)
                FROM orders
                WHERE orders.id_customer = customers.id_customer
        )
)
Nahoru Odpovědět
25.11.2014 19:28
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.