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

Když diskuse,
tak s Lopuchem

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: tbqefan
[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
noire noire svět není jen černobílý 22.10.2007 21: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 11: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 10: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 07: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 23: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 21: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 21: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 17: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 10: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 09: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 08:24  556
jaka db? mysql? jaka verze?
tessien Tessien Of course slavery is the worst thing - that ever happened. But maybe... 21.10.2007 01:35  555
noire [554]: nevim, jestli chapu spravne tvuj dotaz (resp. on to ani neni dotaz, nybrz oznameni), ale - tu vazbu co chces udelat tak, ze budes mit nekolik zaznamu v tabulce "napsane". Napr. kdyz ta tabulka bude mit sloupce "id_autor" a "id_povidka" a budes chtit k povidce s id 1 nastavit autory s id 5 a 6, tak budes mit dva zaznamy - 1,5 a 1,6.
noire noire svět není jen černobílý 21.10.2007 00:56  554
poprosim o radu.
mam tabuli "povidka", ktera obsahuje id knihy. Pak tabuli "autor" a tabuli "napsane", ktera tvori vazby mezi "autor" a "povidka".
Povidkovou knihu a povidky s jednotlivymi autory na vypis dostanu v poho. Jenze nedari se mi vypsat pripad, kdy se na jedne povidce podileji 2 autori. Ve smyslu "autor1, autor2, povidka". Max. se mi podari " autor1, povidka". Podotykam, nejsem zadny prebornik v mysql ani v php a db si delam jen pro sve katalogizacni potreby vlastnich knih. Diky za pripadne rady.
pepak pepak - Pepak.net 2.10.2007 13:08  553
Melo by. Doporucuju vyzkouset.
eso eso 2.10.2007 10:37  552
Ma dotaz, kdyz v mySQL udelam prikaz

UPDATE tabulka SET
pocet =0,
vysledek = pocet + 2;

spocita to nejprve vysledek z puvodni hodnoty pole pocet a az pak pocet vynuluje?

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

(c) 2001-2011 Lopuch.cz   
Kontakt