Diskuze: SQL - výpis druhého řádku splňujícího podmínku
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 9 zpráv z 9.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.


V mysql se pouziva LIMIT. Jinak, radky si muzes ocislovat. Netusim, jak v jinych db
SELECT sloupce FROM tabulka WHERE podminky ORDER BY sloupce ASC/DESC LIMIT od_radku,pocet -- LIMIT 2 je od radku 2
Pokud bys chtel sude, liche radky, pak bys to musel pridat jako dalsi podminku. V zavorce je pak tabulka z jineho dotazu. Mozna ji bude treba dat alias "...FROM (SELECT... ) tab1 WHERE..."
SELECT ... FROM (SELECT ..., COUNT(*) AS cislo_radku... ORDER BY ...) WHERE cislo_radku>2
SELECT ... FROM (SELECT ..., COUNT(*)%2 AS sude... ORDER BY ...) WHERE sude==0
(ale mozna, ze na to existuje v pozadovanem sql jiny jednodussi prikaz)
Tak jsem to zkoušel a bohužel na moji databázi to nefunguje. Dotazuji se
do access databáze a ta (jak jsem se krkolomně přes googlování ´LIMIT´u
dozvěděl) má obdobu v ´SELECT TOP´, jenže tento příkaz vybere všechny
řádky od prvního nalezeného (až do zadaného), nikoliv AŽ určitý
n-řádek 
Jdu hledat alternativu.
SELECT
ROW_NUMBER() OVER(ORDER BY name ASC) AS Row#,
name
FROM table
WHERE row > 1;
zkus tohle
Omlouvám se tohle je správná varianta, protože do WHERE funkcni ani alias nedáš.
SELECT t.*
FROM
(SELECT ROW_NUMBER() OVER(id) as row, id, nazev
FROM tabulka) t
WHERE t.row => 2
google = ms sql limit
ms sql 2005
USE AdventureWorks;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 10 AND 20;
ms sql 2012
USE AdventureWorks; -- mozna staci bez tohoto
GO -- a tohoto
SELECT SalesOrderID, OrderDate
FROM Sales.SalesOrderHeader
ORDER BY SalesOrderID
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
GO -- a tohoto
ms sql 2000
SELECT t1.*
FROM (
SELECT ROW_NUMBER OVER(ORDER BY id) AS row, t1.*
FROM ( ...original SQL query... ) t1
) t2
WHERE t2.row BETWEEN @offset+1 AND @offset+@count;
ms sql 2012
SELECT *
FROM table1
ORDER BY columnName
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY
---
SELECT * FROM table LIMIT OFFSET, ROW_COUNT
This can be translated into Microsoft SQL Server like
SELECT * FROM
(
SELECT TOP #{OFFSET+ROW_COUNT} *, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rnum
FROM table
) a
WHERE rnum > OFFSET
---
CREATE VIEW v_table AS
SELECT ROW_NUMBER() OVER (ORDER BY table_key) AS row,* FROM table
SELECT * FROM v_table WHERE row BETWEEN 10 AND 20
V mysql je to LIMIT 20 let, minimalne, stale 
zkus se mrknout tady, třeba ti to pomůže
https://devask.cz/…uery-results
Tak po dlouhém snažení a postupným zkoušením navržených možností,
kdy v dotazech nefungoval (databáze (MS 2007) stále házela chybu) pro LIMIT i
OFFSET i GO ... jsem nakonec ve chvíli náhlého impozantního myšlení
vymyslel jak můj problém vyřešit...
prakticky jde jen o využití základních ORDER BY a TOP, kdy jednou seřadím
výběr od konce (DESC) a udělám TOP o jeden řádek méně, abych následně
vše seřadil ASC a vybral první řádek (tedy prakticky druhý ve
výběru)...
lépěji v kódu kde x=počet řádků (což lze samozřejmě zjistit
jednoduchým dotazem) ...
SELECT TOP 1 DatumKontroly
FROM (
SELECT TOP (x-1) DatumKontroly
FROM Kontroly
WHERE IDzaznamKontroly = 420
ORDER BY DatumKontroly DESC)
ORDER BY DatumKontroly ASC;
No akorátže jsem nakonec zjistil, že mi tuto možnost prakticky nabídl
Michal Štěpánek pod svým odkazem, takže si nejsem jist, jestli jsem řešení zvládl
v rámci svého osvícení, nebo prvotním nepochopením odkazovaného Michalova
kódu 
samozřejmě
(x-1)
ošetřím v kódu programu, nikoliv v kódu dotazu.
Zobrazeno 9 zpráv z 9.