NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: SQL - SELECT, LEFT JOIN a COUNT

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
katrincsak
Člen
Avatar
katrincsak:5.5.2017 14:16

Zdravím,

potřebuji selectnout všechny produkty za pomocí funkce IN a podle selectnutých ID provést rovnou dotaz na počet v jiné tabulce. Jedná se o PostgreSQL, ale dotaz se snad nebude měnit od MySQL.

Aktuální dotaz, který vezme produkty a seřadí je. Osobně potřebuji udělat to samé, ale z jiné tabulky vzít počet a seřadit to podle toho počtu.

Původní:

SELECT * FROM product WHERE product_id IN (8237527, 8237888, 8237933, 8237897, 8237531) ORDER BY product.d03 DESC

Pokusil jsem se a sice bez chby, vypíše to hodnoty tabulek, ale count je všude 0 a tak to mám určitě špatně..

SELECT p.*,eo.* FROM product p
        LEFT JOIN (
                SELECT eo.order_id, COUNT (eo.order_id) FROM eshop_order eo GROUP BY eo.order_id) AS eo ON eo.order_id = p.product_id
        WHERE p.product_id IN (8237527, 8237888, 8237933, 8237897, 8237531) ORDER BY p.d03 DESC;

Děkuji moc za radu.

 
Odpovědět
5.5.2017 14:16
Avatar
katrincsak
Člen
Avatar
Odpovídá na katrincsak
katrincsak:5.5.2017 15:55

Hotovo:
(chyba moje, 2 sloupce se nemohli rovnat, protože obsahovali různá data. Což jsme měl za to, že mají společnou hodnotu.

SELECT eo.sum_order,product.* FROM product
        LEFT JOIN (
                SELECT eo.product_id,SUM(eo.quantity) AS sum_order FROM eshop_order_item eo WHERE quantity=1 GROUP BY eo.product_id) AS eo ON eo.product_id = product.product_id
        WHERE product.product_id IN (8237527, 8237888, 8237933, 8237897, 8237531) ORDER BY eo ASC;
 
Nahoru Odpovědět
5.5.2017 15:55
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 2 zpráv z 2.