Diskuze: SELECT pro adresni stitky
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 7 zpráv z 7.
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í PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Domaci ukol? A tabulku 3 mas kde, ktera definuje propojeni?
tab1 (id_adresa, adresa)
tab2 (id_balik, balik)
tab3 (id_balik, id_adresa)
SELECT
tab1.balik,
tab2.adresa,
COUNT(tab3.id_adresa) AS pocet
FROM
tab3
LEFT JOIN tab1 ON tab1.id_balik=tab3.id_balik -- u toho ON mozna nejdriv tab3, pak tab1, pokud to nebude fungovat
LEFT JOIN tab2 ON tab2.id_balik=tab3.id_balik
Mno, ale jestli to mas jen takhle, tak to je celkem nic moc reseni. S tim se moc operovat neda.
tab1 (id_adresa, adresa)
tab2 (id_adresa, pocet)
Asi bys musel udelat nejakou proceduru, ktera vygeneruje pro kazdy pocet
individualni radek do temp tabulky a tu pak vratis uzivateli.
google = procedure clone row by cause
google = mysql procedure cycle cause example
Mohlo by to byt neco takoveho. Ale nikdy jsem to nedelal, tak jen upravuji,
co jsem nasel 
DECLARE #temp_table(
id_adresa INT,
balik_cislo INT
)
SET @i = 1
SET @numrows = (SELECT COUNT(*) FROM tab2)
IF @numrows > 0
WHILE (@i <= @numrows)
BEGIN
SET @id_adresa = (SELECT id_adresa FROM tab2 LIMIT @i,1)
SET @pocet = (SELECT pocet FROM tab2 LIMIT @i,1)
SET @j = 1
IF @pocet > 0
WHILE (@j <= @pocet )
BEGIN
INSERT INTO temp_table (id_adresa, balik_cislo) VALUES (@id_adresa, @j)
SET @j = @j + 1
END
SET @i = @i + 1
END
SELECT FROM #temp_table LEFT JOIN... --- a select, kterym pak najoinujes udaje adres podle id
google = sql procedure foreach row
https://forums.asp.net/t/1207630.aspx?…
Urcite to jde i mene krkolomne, ale takovehle konstrukce nepouzivam, tak ti moc neporadim.
Tak nakonec jsem to vyresil nasloedovne:
zalozim novou tabulku max_baliku s max cislem poctu stitku treba 100 (tolik jich
nikdy nebude) a pouziju to v joinu:
SELECT adresy.ADRESA, max_baliku.PORADI, pocet_baliku.POCET FROM adresy
LEFT JOIN pocet_baliku ON pocet_baliku.CISLO_ZASILKY = adresy.CISLO_ZASILKY
LEFT JOIN max_baliku ON max_baliku.PORADI <= pocet_baliku.POCET
dulezite je to <= v poslednim joinu, to pak udela presne to co potrebuju. doda duplicitni radky vcetne poradi
jen upresnim, ze tabulka max_baliku obsahuje 100 radku (1-100) nikoli jen jedine cislo 100.
Zobrazeno 7 zpráv z 7.