Avatar
c2807
Člen
Avatar
c2807:

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:

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:

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:

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.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

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í
+1 bodů
Ř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):

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
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.