Počet CSV elementů v poli – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Počet CSV elementů v poli – MySQL – Fórum – Programujte.comPočet CSV elementů v poli – MySQL – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
fix0
Stálý člen
20. 8. 2020   #1
-
0
-

Dobrý večer,

se tu celý večer snažím vyrobit sčítání pole, ve kterém jsou CSV data.

Úlohu jsem vytvořil zde: http://sqlfiddle.com/#!9/00efa8/1

Cílem je přidat do SELECT sloupec, který bude počítat počet všech neduplicitních CSV prvků.

Mám to. Problém je v tom, žeč dochází ke sčítání počtu CSV prvků, ale potřeboval bych, aby to ščítalo pouze neduplicitní z nich, třeba by nějak šlo použít DISTINCT, ale já na to nepřišel. Už tu mám trojnásobně vnořený SELECT a stejně mi to nefunguje, takže nejvyšší čas si přijít pro radu. :-)

Toto mi funguje

  • Dataz: LENGTH(csv_row) - coalesce(LENGTH(REPLACE(csv_row, ',', '')), 0, 'NULL VALUE') +1 AS pocet_vsech_prvku
  • csv_row obsahuje. 1,6,4,2,6,4,5
  • Result pocet_vsech_prvku:  7 (prvků se zanedbáním duplicit)

Toto mi NEfunguje a potřebuji:

  • Dotaz: něco AS pocet_neduplicitnich_prvku
  • csv_row obsahuje. 1,6,4,2,6,4,5
  • Result pocet_vsech_prvku:  5 (prvků bez duplicit)



Nevěděl byste prosím pěkně někdo, jak na to? Děkuji

Nahlásit jako SPAM
IP: 31.30.174.–
gna
~ Anonymní uživatel
1209 příspěvků
20. 8. 2020   #2
-
0
-

Napiš jeden rozumný důvod, proč to dělat v SQL a já vymyslím, jak to udělat.

Nahlásit jako SPAM
IP: 213.211.51.–
fix0
Stálý člen
20. 8. 2020   #3
-
0
-

Rozumný důvod bohužel nemám.

V PHP to vyřešit umím jednoduše, ale jde o to, že nad tím chci ještě dělat aritmetiku a bude to použité pro řazení výsledků z databáze. Nechci to řadit až v aplikaci.

Už jsem fakt blízko, akorát mi ten DISTINCT nefunguje. :-(

http://sqlfiddle.com/#!9/00efa8/4

GROUP_CONCAT(DISTINCT datasduplicitami ORDER BY datasduplicitami ASC SEPARATOR ';') AS data_bez_duplicit

Nahlásit jako SPAM
IP: 31.30.174.–
gna
~ Anonymní uživatel
1209 příspěvků
20. 8. 2020   #4
-
0
-

SQL má jasně danou syntaxi a klíčová slova mají svůj význam a místo. Co by to tady a s takovými daty asi mělo udělat?

Kde jsi k tomu CSV přišel? Nevzniklo ti zase nějakým nesmyslným concatem, kde by ty duplicity šly vyřešit už u zdroje?

Nahlásit jako SPAM
IP: 213.211.51.–
Řešení
fix0
Stálý člen
21. 8. 2020   #5
-
0
-
Vyřešeno Nejlepší odpověď

Pět vnořených SELECTU (3 hodiny práce) jsem smazal a začal od znova. Ve finále jsem to vyřešil za 15 minut, takhle jednoduchý to bylo: http://sqlfiddle.com/#!9/cbd1ed/8

:-D

Nahlásit jako SPAM
IP: 31.30.174.–
Kit+14
Guru
22. 8. 2020   #6
-
0
-

#5 fix
Stále mi uniká, k čemu toto CSV mělo být dobré. Teď už víš, jak chutná porušování 1NF.

Nahlásit jako SPAM
IP: 46.135.7.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Počet prvků poli — založil suchla12

Počet prvků v poli — založil Hmm

Počet čísel v poli — založil TomasekTom

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý