Registrace nového uživatele
Návod
Kluby
Archív Lopuchu
Lopuch.cz
Já Vánoce juchuchu
oslavím na Lopuchu!
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:
steujvn
[ 1008 ]
<Novější
<<<Nejnovější
Nejstarší>>>
Starší>
označené
neoznačené
rozsah
huh
21.10.2007 20:43
561
noire [560]
: a proc mas group by podle autoru, kdyz chces vystup podle knih
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
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
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
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
online -
Krabice živých
21.10.2007 07:24
556
jaka db? mysql? jaka verze?
Tessien
Of course slavery is the worst thing -
that ever happened. But maybe...
21.10.2007 00: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
svět není jen černobílý
20.10.2007 23: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.net
2.10.2007 12:08
553
Melo by. Doporucuju vyzkouset.
eso
2.10.2007 09: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?
pepak
-
Pepak.net
7.9.2007 11:03
551
NO ja bych rekl, ze pokud se na to ma jeste neco navazovat, tak nejrychlejsi bude ta procedura...
tvx
Myslet si, že svět je JEN takový, jak -
ho v daný čas můžeme pochopit je hloupé.
7.9.2007 10:56
549
samotnyho by me to zajimalo srovnany z hlediska rychlosti....
tvx
Myslet si, že svět je JEN takový, jak -
ho v daný čas můžeme pochopit je hloupé.
7.9.2007 10:56
548
mno, diky za rady, ten group_concat se mi urcite hodi nekde jinde... problem je ze to cely jeste samozrejme k sobe vaze dalsi tabulky a spojit to s tim... uvidim jak rychly to bude a v pripade problemu zkusim nejaky ty pokusy ale ono asi uz samo o sobe to group_concat asi nebude z nejrychlsjsich, myslim... a pak jeste sacovat v tom co to spojilo pomoci hledani patternu...
to co jsem nenchtel ale nakonec udelal mi prijde zas jako nejcitsi reseni z profesionalnho hlediska i kdyz cekam jak se to bude zpomaloat s pribejvanim zaznamu...
pepak
-
Pepak.net
7.9.2007 10:34
547
Jeste me napadlo, ze by se to dalo udelat takovou zbesilou (nicmene funkcni) oklikou:
SELECT id1
FROM tabulka
WHERE id2 IN (20,40)
GROUP BY id1
HAVING COUNT(*)=2 -- pocet ruznych ID2 v zavorce
Jedinym omezenim je, ze dvojice (id1,id2) musi byt vzdy jedinecna.
pepak
-
Pepak.net
7.9.2007 10:32
546
Viz
GROUP_CONCAT
[ 1008 ]
<Novější
<<<Nejnovější
Nejstarší>>>
Starší>
označené
neoznačené
rozsah
(c) 2001-2011 Lopuch.cz
Kontakt