Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 6. diel - MS-SQL krok za krokom: Výber dát (vyhľadávanie)

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Milan Jiroušek:17.7.2017 12:36

Malá oprava. Výběr uživatelů, kteří se narodili mezi lety 1980 a 1990 (včetně) by měl vypadat takto:
SELECT [Jmeno], [Prijmeni], [DatumNarozeni] FROM [Uzivatele] WHERE [DatumNarozeni] BETWEEN '1980-1-1' AND '1990-12-31';
nebo
SELECT [Jmeno], [Prijmeni], [DatumNarozeni] FROM [Uzivatele] WHERE YEAR([DatumNa­rozeni]) BETWEEN 1980 AND 1990;

Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na Milan Jiroušek
David Hartinger:8.11.2017 20:23

Díky za postřeh, přidám tam i tuto variantu.

Odpovedať
New kid back on the block with a R.I.P
Avatar
Miloš Etlík:20.2.2020 14:58

Ahoj mám dotaz s jazykem SQL začínám a mám problém s vybráním dat která mám ve formátu viz obrázek. Problém je že se opakujíé data se stejnou časovou známkou potřebuji vybrat data která budou mít jedinečnou časoovou známku a v případě že je více stejné čas. známky vzít ty hodnotu z ostatních sloupců nejvyšší? Muže někdo navést jakým směrem se dát prosím ?

Avatar
Odpovedá na Miloš Etlík
Miloš Etlík:20.2.2020 15:07

Takhle to mám ted jedná se o dotaz v programu Ignition

SELECT NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_TIMESTAMP AS time,
NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_VALUE AS Teplota_v_kabině,
NSP5_Ignition2. NSP5_Machine_Ti­me_Remaining_ti­me_Total_VALUE AS Čas_celkový
FROM NSP5_Ignition2
where NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_TIMESTAMP > DATEADD(HOUR,-12,getdate())
GROUP BY NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_TIMESTAMP ,
NSP5_Ignition.NSP5_Machine_Tem­p_ActTemperatu­re_VALUE ,
NSP5_Ignition2. NSP5_Machine_Ti­me_Remaining_ti­me_Total_VALUE
order by time asc

Avatar
Jakub Švasta
Lektor
Avatar
Odpovedá na Miloš Etlík
Jakub Švasta:21.2.2020 0:09

Ignition neznám, ale tohle se dělá všude stejně:

SELECT NSP5_Ignition2.NSP5_Machine_Temp_ActTemperature_TIMESTAMP AS time,
MAX(NSP5_Ignition2.NSP5_Machine_Temp_ActTemperature_VALUE) AS Teplota_v_kabině,
MAX(NSP5_Ignition2. NSP5_Machine_Time_Remaining_time_Total_VALUE) AS Čas_celkový
FROM NSP5_Ignition2
where NSP5_Ignition2.NSP5_Machine_Temp_ActTemperature_TIMESTAMP > DATEADD(HOUR,-12,getdate())
GROUP BY NSP5_Ignition2.NSP5_Machine_Temp_ActTemperature_TIMESTAMP

Obecně to funguje takhle:

SELECT
        MAX(SloupecA),  -- vezmi maximum pro stejné hodnoty
        MIN(SloupecB),  -- u jiného sloupce nemusím chtít maximum, ale třeba minimum
        SloupecC,
        SloupecD        -- všechny ostatní sloupce, co chci vybrat
FROM MojeTabulka
GROUP BY
        SloupecC,
        SloupecD        -- ty všechny ostatní sloupce, co chci vybrat

Kdyžtak je to popsané v následující lekci. :-)

Avatar
Miloš Etlík:21.2.2020 6:45

Ahoj děkuju Ignition je SCADA v průmyslu ale máš pravdu mělo by to být stejné bohužel s max jsem zkoušel taky ale můj problém zůstane u toho že mě dotaz vybere i stejné časové známky Ja bych potřeboval vybrat jen řádky kde není stejná časová známka bohužel Kepware(OPC server) do databáze ukládá hodnoty pokaždé když se změní sledovaný parametr a to se stává i se stejnou časovou známkou. já potřebuji pomocí Ignition data zobrazovat v průmyslu na panelech a stejná časová známka mě dělá problém s objemem dat celé zobrazení je pak pomalé a doba na dotaz hrozně dlouhá.

Avatar
Jakub Švasta
Lektor
Avatar
Odpovedá na Miloš Etlík
Jakub Švasta:21.2.2020 13:57

Když to sgrupneš (to je slovo!) podle časové známky, tak by to každou její hodnotu mělo vybrat jen jednou. Koukni na obrázek níž (ukázka z SQL Serveru).

Jedině, že by Ignition používalo nějaký divný dialekt SQL, kde se nepoužívá funkce MAX tímhle způsobem, ale to se mi nezdá.
Anebo mě napadá, že se možná ty časové známky liší v tisícinách vteřiny, ale v náhledu to vypadá, že jsou stejné, protože tam jsou vidět jen celé sekundy.

Avatar
Jaroslav Drobek:19.10.2022 11:56

"..chceme 10 řádku z vrchu.."

Avatar
Petr Lorenz
Člen
Avatar
Petr Lorenz:4.4.2023 13:34

Ahoj, nevím jestli dělám něco špatně nebo ne. Když si chci přidat do tabulky skrze T-SQL údaje do tabulky. Tak jak to je v lekci, tak mi to nejde a červeně se mi označí slovo **CREATE **.
A to jsem to zkoušel jak přepisovat ručně, tak také ctrl + c, ctrl + v. A pořád nemůžu přijít na to kde je problém.

Avatar
Luboš Polák :21.4.2023 15:59

v tabulce za
SELECT * FROM [Uzivatele] WHERE [DatumNarozeni] >= '1960-1-1' AND [PocetClanku] > 5;
Zdroj: https://www.itnetwork.cz/…-vyhledavani
je zřejmě o dva řádky víc

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 28.