Filtrování stejných jmen ve výpisu z databáze – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Filtrování stejných jmen ve výpisu z databáze – MySQL – Fórum – Programujte.comFiltrování stejných jmen ve výpisu z databáze – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
cosh-boy0
Newbie
13. 2. 2008   #1
-
0
-

Zdravím, mám dotaz....

Abych mluvil ihned v příkladu, mám tabulku o sedmi sloupcích.Lidé mají před sebou formulář, kde zadávají 7 jmen, které je ihned napadli. Každé to jméno je samozřejmě uloženo do svého sloupce v tabulce podle toho jak je zadávali a potřebuji z tohohle seznamu vypsat všechna jména, která ti lidi zadali, ale právě tak, aby se neduplikovali, aby ve výpisu bylo pouze jednou jméno michal, jednou martin atd... Problém je v tom že musím mít těch 7 sloupců, protože potom podle toho budu dělat statistiky že u jména michal toho člověka napadlo i 50x jméno martin atd,.,,,

Mohl by mi někdo prosím poradit jak udělat ten výpis jmen ze sedmi sloupců tak, aby se jména neduplikovala? Díky...

Nahlásit jako SPAM
IP: 62.240.178.–
amatérský webkoder http://cosh-boy.cz
Reklama
Reklama
stepan0
Newbie
13. 2. 2008   #2
-
0
-

Uváděný postup je naprosto chybný. Databáze (aplikace) by měla být navržena tak, aby mohla reagovat na případné změny. Jak se zachováš, pokud si za měsíc řekneš, že by bylo dobré přidat další jméno (a zvětšit počet ze sedmi na osm)? Půjde vůbec s takovouto tabulkou dělat nějaké změny?

Můžeš to obejít vytvořením číselníku, který bude obsahovat jména v kalendáři (při vkládání můžeš dělat kontrolu, jestli uživatel neposlal nějaký jiný vstup nebo pomocí AJAXu uživateli napovídat jména). Na číselník se budeš odkazovat v tabulce záznamů, v které budeš evidovat unikátní identifikátor uživatelského vstupu (konkrétní interakce uživatele), pořadí volby a ID z číselníku se jmény. Do tabulky můžeš zahrnout i čas nebo jiné zajímavé vstupy. (Při dalším rozšiřování se nabízí otázka, jestli nevytvořit ještě jednu tabulku, která bude uchovávat data pro jedno vyplnění formuláře - tím se také urychlí agregování dat.)

Díky tomu získáš flexibilní strukturu, která ti pokryje statistiku jmen vybraných v daném pořadí. Zároveň bez větších potíží můžeš zvýšit/snížit počet záznamů, které bude uživatel moci zadat. (Jak naložíš s případnými chybějícími/přebývajícími informacemi u předchozích záznamů záleží jen na tobě. Díky datumu je můžeš třeba ignorovat.)

K zamyšlení: zkus navrhnout databázový model tak, aby šlo vkládat i jiné varianty testů (např. ABCD atd.)

Nahlásit jako SPAM
IP: 80.95.102.–
Paja2
~ Moderátor
+2
Věrný člen
13. 2. 2008   #3
-
0
-


To cosh-boy : zkus pužít group by

Nahlásit jako SPAM
IP: 88.146.215.–
dalaman0
Věrný člen
14. 2. 2008   #4
-
0
-
Nahlásit jako SPAM
IP: 78.98.30.–
Lepšie je mať psa na saláme ako salámu pod psom !!!
toka0
Stálý člen
15. 2. 2008   #5
-
0
-

GROUP BY to dle me neresi, spravne reseni je DISTINCT, vynecha duplicitni zaznamy daneho sloupce.

Nahlásit jako SPAM
IP: 86.61.165.–
Tomáš Kavalek
insider0
Věrný člen
18. 2. 2008   #6
-
0
-

To toka : ano daneho sloupce, ale pokud sem to dobre pochopil, tak soucasna struktura jeho databaze je takova, ze distinct nebude fungovat(michal se muze na prvni radku vyskytnout v prvnim sloupci, na druhem vsak v patem sloupci).
jak sem pochopil, db vypada takto

id | jmeno1 | jmeno2 | jmeno3 | jmeno4 | jmeno5 | jmeno6 | jmeno7
-----------------------------------------------------------------

pak tedy

1 | michal | adam | martin | lukas | tomas | pavel | jan
----------------------------------------------------
2 | petr | martin | libor | ales | milan | pavel | jana

= distninct je k nicemu, group by rovnez - napr "distinct jmeno3" by vypsalo oba radky


Jak uz psal stepan, databaze je spatne navrzena a souhlasim s jeho navrhem :)

Nahlásit jako SPAM
IP: 78.102.32.–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
toka0
Stálý člen
18. 2. 2008   #7
-
0
-

To insider : :smile2:

Nahlásit jako SPAM
IP: 86.61.165.–
Tomáš Kavalek
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×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, 217 hostů

Podobná vlákna

Posun jmen — založil David

Posun Jmen — založil Radek

Trideni jmen — založil Lukáš

C# - Filtrování dat — založil Malag

 

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