Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Lopuch, server nejen
pro botaniky

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub Database (mysql,...) [ŽP: neomezená] (kategorie Programování) moderuje melkor_unlimited.
Archiv
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: uiryzze
[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
noire noire svět není jen černobílý 28.10.2007 14:29  570
Panove dekuji vam moc s ochotou pomoci, nechal jsem to par dni uzravat a pak jsem samozrejme objevil vlastni chybu.
To sql bylo v poradku, jen se mi tam pletla jina promenna, a bohuzel to melo na vystup velky vliv.
Jeste jednou diky.
huh huh 23.10.2007 22:52  569
noire [568]: nic chytrýho mě nenapadá, nechceš někam dát kus tý svý databáze, hádat takhle naslepo je těžký
noire noire svět není jen černobílý 23.10.2007 19:15  568
huh:jsem si rikal, ze je to divny, ale chybu nemuzu zadnou najit :-(
huh huh 23.10.2007 15:24  567
noire [566]: hele, ja to pred postovanim zkousel. nekde delas neco blbe
noire noire svět není jen černobílý 22.10.2007 20:57  566
huh:
bohuzel, jak uz jsem psal nize, tahle konstrukce udela jen:
"...dostanu vypis 3 povidek a k tomu jen jednoho z autoru..."

knedle:
tabule autor = id, ...
tabule povidka = id, id_kniha, ...
tabule napsane = povidka_id, autor_id
huh huh 22.10.2007 10:52  565
Neco takovyho by melo fungovat:
SELECT povidka.nazev, GROUP_CONCAT(autor.jmeno)
FROM autor, napsane, povidka
WHERE povidka.id_kniha = $kniha
AND napsane.autor_id = autor.id
AND napsane.povidka_id = povidka.id
GROUP BY povidka.id

huh huh 22.10.2007 09:10  564
noire [562]: pochop, ze co das do group by, to nikdy nedostanes na stejnej radek
knedle knedle online - Krabice živých 22.10.2007 06:22  563
noire [562]: hod jsem presnej popis tech tri tabulek, on te to tu nekdo posklada
noire noire svět není jen černobílý 21.10.2007 22:31  562
huh:protoze ani group podle povidek neni to prave orechove - dostanu vypis 3 povidek a k tomu jen jednoho z autoru (vsechny 3 povidky maji 2 autory).
Proste se mi nedari vypsat oba dva autory ke kazde ze 3 povidek.
Tem uvedeny priklad je samozrejme uplne spatny, protoze se mi vypise:
autor 1, povidka 1,
autor 3, povidka 2,
autor 4, povidka 2
a pritom bych chtel:
autor 1, autor 2, povidka 1,
autor 3, autor 4, povidka 2,
autor 5, autor 6, povidka 3
Doufam, ze je to srozumitelne.
huh huh 21.10.2007 20:43  561
noire [560]: a proc mas group by podle autoru, kdyz chces vystup podle knih
noire noire svět není jen černobílý 21.10.2007 20:31  560
knedle:jj GROUP_CONCAT(DISTINCT pouzivam, ovsem nedostanu kyzeny vystup.
Dotaz je zhruba nasledovny...
WHERE povidka.id_kniha = $kniha
AND napsane.autor_id = autor.id
AND napsane.povidka_id = povidka.id
GROUP BY napsane.autor_id...
Jenze se svymi chabymi znalostmi predpokladam, ze to nebude dobre, protoze na vystup mi dorazi jen:
autor1, povidka
knedle knedle online - Krabice živých 21.10.2007 16:05  559
noire [557]: napadaji (a pouzivam) dve moznosti

1/ mas obycejny vystup / povidka - autor na jednom radku, pokud ma povidka vice autoru, znaci to vice radku ve tvem vysleku z DB, ten si projdu a narvu do pole:
[povidka a][autori][autor a]
[povidka a][autori][autor b]
[povidka b][autori][autor c]
[povidka c][autori][autor a]
...
a pak vypisuju toto pole povidek v cyklu a pripadne pres cyklus nebo php fci implode() spojuju autory, ktere u povidky vypisu


2/ pokud u tve mysql opravdu funguje group_concat, tak moznost
GROUP_CONCAT(DISTINCT prijmeni ORDER BY prijmeni DESC SEPARATOR ', ') as autori
takze dostanes seznam autoru (prijmeni) u jedne povidky oddelene carkami s mezerou -
takze vysledek pri tvem vystupu my mohl byt>
nazev povidky - autor A, autor B

pokud by si to chtel jeste nejak upravit - napr. vypisuje do tabulky a chces ty autory mit v bunce odradkovane, tak si ten retezec s autory rozdelis pomoci php fce explode(", ", $zaznam['autori']) / nebo muzes v tom sql dat primo separator [br] :)

a EtDirloth [558] to popsal taky pekne
etdirloth EtDirloth 21.10.2007 09:45  558
noire [557]:
najjednoduchsie to spravis tak, ze pomocou right join si sparujes vsetkych autorov s poviedkami a naopak (to pises, ze si uz zvladol) a potom to v aplikacii spracujes podla potreby

ak to nutne potrebujes vratit priamo z SQL servera, tak by si si mohol vyskladat stlpec "autori" v nejakej stored funkcii (nepoznam moznosti MySQL4.1.3) s vystupom napr. ako csv (co by bolo pouzitelne aj priamo na vystupe - teda citatelne uzivatelom), resp. ako pole, xml, ... neviem ako to potrebujes

ak ocakavas, ze ti server vrati premenlivy pocet stlpcov pre premenlivy pocet autorov, tak to je sql-hovadina - jedinu rozumnu moznost takehoto vystupu mas v transponovani klasickeho vystupu (tym myslim pevny pocet stlpcov x N-riadkov)
noire noire svět není jen černobílý 21.10.2007 08:51  557
knedle: MySQL 4.1.3
Tessien: jj dari se mi vypsat
"nazev knihy, autori 5, povidka 1" a
"nazev knihy, autori 6, povidka 1".
Samozrejme chci jen jeden zaznam, kdyz je stejna povidka.
Zkousel jsem vyuzit GROUP_CONCAT([DISTINCT], ale misto aby to vyplivlo
"nazev knihy, autori 5, 6, povidka 1"
dostal jsem jen
"nazev knihy, autori 5, povidka 1".
Takze si proste nevim rady.
knedle knedle online - Krabice živých 21.10.2007 07:24  556
jaka db? mysql? jaka verze?

[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt