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

Náš Lopuch Vám
vytře zrak

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: dmeezws
[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 22.12.2010 12:21  1325
Jakej kdo pouzivate DB wrapper pro MYSQL nebo i jinou DB v PHP a jak jste s tim spokojeny?
themajkl themajkl All those moments will be lost in time - like tears in rain. 22.12.2010 10:06  1324
tvx [1323]: No tak jistě, když tam zapleteš limit... ale v tom případě to záleží na tom, jestli chceš výsledek seřadit (order by). Pokud tam to řazení je, stejně musí projít všechno i s tím limitem.
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 22.12.2010 10:02  1323
themajklpro pripad kdy vysledkam je ale 200tisic zaznamu, na nichz musi udelat distinct z vysledkem 50tisic a pote jich diky limitu 20 vypsat... bude trvani podle toho jak chapu zpracovani ja hodne rozdilny.
themajkl themajkl All those moments will be lost in time - like tears in rain. 22.12.2010 08:55  1322
tvx [1321]: Distinct by měl ovlivnit jen formát výpisu (ubere duplicity), celkové trvání selectu zůstane stejné.
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 22.12.2010 08:51  1321
JJ, je to presne jak pise pepak, nepottrebuju ani tak vypisy ale potrebuju parametrizovat-automatizovat hledani v katalogu, nejlip nejak co nejhomogenejsim zpusobem, podumam, co z toho pro me bude snazsi... u distinct se bojim delky trvani.
themajkl themajkl All those moments will be lost in time - like tears in rain. 21.12.2010 22:27  1320
pepak [1318]: No tak ale to je blbě napsaný select, nebo aspoň špatně definované zadání. (Nemluvě o tom, že píšeš "vyhledávám autora", ale ten select hledá knihu (podle autora).) Takže ano, pokud chceš hledat podle něčeho jiného, než select vrací a chceš jen unikátní položky, je distinct dobré řešení.
knedle knedle online - Krabice živých 21.12.2010 22:24  1319
taky zalezi kolik toho vypisujes - reseni uz napsali ostatni

pridam jen, ze kdyz jsem to resil ja, ziskal id knihy (dle filtru)
a pomoci idknih jsem si vytahl do assoc tab vsechny prislusne autory

tj. 2 selecty, tri dotazy do db


drobne ot:

naposled jsem pouzil NotORM u teto struktury a s jeho pouzitim byl vystup velmi jednoduchy

jenze to bys musel mit strukturu db v urcitem tvaru (mozna to jde priohnout, ale ja ji tvoril primo pro toto db udelatko)
pepak pepak - Pepak.net 21.12.2010 22:14  1318
The Majkl: Protože se musíš podívat na reálné použití, ne na teoretické konstrukce. Obvykle nevyhledáváš jednoho konkrétního autora, ale všechny autory začínající daným řetězcem.

knihy(id, nazev): (1, 'abc'), (2, 'def')
autori(id, jmeno): (1, 'pepak'), (2, 'themajkl'), (3, 'huh'), 'pepazdepa')
autoriknih(kniha, autor): (1, 1), (1, 4), (2,1), (2, 2)

SELECT *
FROM knihy
JOIN autoriknih ON autoriknih.kniha=knihy.id
JOIN autori ON autori.id=autoriknih.autor
WHERE autori.jmeno STARTING WITH 'pepa'

Pokud to napíšeš takhle (intuitivně, ale nesprávně), dostaneš ve výsledku knihu 1 dvakrát (jednou pro autora pepak a podruhé pro pepazdepa). Proto tvxovi radím, buď distinct nebo subselect, podle situace.
themajkl themajkl All those moments will be lost in time - like tears in rain. 21.12.2010 21:26  1317
pepak [1316]: Jak by mu tohle mohlo vrátit víc řádků, když pak logicky budeš mít v podmínce omezení na konkrétního autora?
pepak pepak - Pepak.net 21.12.2010 21:22  1316
J8 teda ten požadavek chápu opačně - chce vyhledat všechny knihy, na kterých se podílel zadaný autor.
themajkl themajkl All those moments will be lost in time - like tears in rain. 21.12.2010 21:00  1315
Něco podobného se řešilo minule, ne? Já bych šel cestou přidat sloupeček "autoři", čili to, co je na katalogu.
huh huh 21.12.2010 20:52  1312
(ze zvyku píšu kniha, i když teď koukám, že šlo o katalog. to je jedno)

On asi chce dotaz, který vrátí název knihy a autory. V zásadě je možné to řešit:
1) rozdělením na dva dotazy -- elegantní, čisté řešení :-)
2) nechat to v 1 dotazu a prostě ignorovat, že to název vrátí pětkrát
3) použít group_concat, array atd. podle toho, co z toho db umí
4) přidat si do knihy řetězec autoři, kde se budou buď automaticky (třeba pomocí triggerů) nebo ručně (šikovné tam, kde něco takového se uvádí přímo na knize) udržovat spojený seznam autorů.


themajkl themajkl All those moments will be lost in time - like tears in rain. 21.12.2010 20:30  1311
tvx [1309]: Moc to nechápu. Pokud chceš autory jedné knihy a je jich víc, je správné, že se jich vrátí víc. Pokud chceš knihu, máš špatně napsaný dotaz.
pepak pepak - Pepak.net 21.12.2010 16:56  1310
a) Používej DISTINCT
b) Můžeš zkusit vnořené selecty (SELECT * FROM dila WHERE dilo_id IN (nejaky select, ktery vrati seznam ID del).
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 21.12.2010 16:12  1309
mam problem s tim, ze diky normalizaci tabulky (udaj autor v ni muze ted mit X vyskutu) sem ji musel rozebrat na dve.
takze mam tabulku katalog a zvlast tabulku autori.
problem nastava pri predelavani vsech dotazu kolem vypisu tabulky aby fungovaly jako drive.
pri standardnim joinu tabulek se mi ke kazdymu autorovi vypise znova i polozka katalogu, takze misto jedny polozke se jich pri peti autorech vybere 5.

vim ze tohle muzu vyresit pres group_concat a group ale to je na prepsani pekna prasarna (vypisy vsech vybiranejch polozek do group by atd.)

je nejaky snadny reseni? ani tak moc nepotrebuju vystup tech autoru jako soucast katalogu ale potrebuju v nich podle autora hledat a filtrovat, pricemz chci mit vzdy jen jednu katalogovou polozku.

Jak na to?

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

(c) 2001-2011 Lopuch.cz   
Kontakt