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

Něco navíc v zeleném?
A proč ne...

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: fuqkwev
[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
pepak pepak - Pepak.net 7.9.2007 11: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 - Pepak.net 7.9.2007 11:32  546
Viz GROUP_CONCAT
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 7.9.2007 11:03  545
jde o mysql, id1 bude asi 25000, id2 asi stovky... uz jsem to udelal tak jak jsem psal... to co pises ty jsem prave doufal ze by mohlo existovat, neb by to slo vyuzit...
pepak pepak - Pepak.net 7.9.2007 10:53  544
Ale dost mozna ta procedura bude stejne rychlejsi...
pepak pepak - Pepak.net 7.9.2007 10:52  543
Hmmm. A v jake databazi to ma byt? Ja bych to treba ve Firebirdu 1.5 delal procedurou, ve 2.01 uz by to slo primo v selectu (je tam funkce, ktera posklada vic zaznamu do jednoho fieldu, pres ktery uz pak muzu udelat treba WHERE x LIKE '%,20,%' AND x LIKE '%,40,%')
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 7.9.2007 10:40  542
to bohuzel udela jakoby OR, navic musim dat distinct.
ja to potrebuju jako AND...
tedy vsechnu ID1 ktera maji napravo konkretni ID2 i ID3 i ID4 soucasne...
pepak pepak - Pepak.net 7.9.2007 10:27  541
Neco jako SELECT * FROM tabulka WHERE id2 IN (20, 40)?
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 7.9.2007 10:09  540
napada me akorat tolikrat tu tabulku zjoinovat kolik je tech id2 ve vyctu a za kazdej join v ty 'reprezentaci' tabulky chtit jedno id2 :v(
coz bude asi vysoce neefektivni...
tvx tvx Myslet si, že svět je JEN takový, jak - ho v daný čas můžeme pochopit je hloupé. 7.9.2007 10:03  539
jsem dneska nejakej zabrzdenej... nevim kterak efektivne na toto:
mam tabulku ID1,ID2, kde je ID1 ku ID2 ve vztahu N:N...
tedy neco jako:
10,20
10,30
10,40
20,40
20,15
potrebuju vybrat takovy ID1, ktery maj jako ID2 u sebe urcitej vycet ID2...
bredy 14.8.2007 10:02  538
huhNo řekl bych, že je to naprosto stejný dotaz. Jen využívá podquery. Obecně nám ve škole štěpovali do hlavy, že subquery jsou obecně pomalější než obyčejné JOIN. Ale nezkoušel jsem, mohu to vyzkoušet. Nicméně jak říkám, je to 1:1 a navíc si nedokážu představit, jak rychlé bude hledat NOT IN v množině čítající desetitisíce záznamů.
straka82 Straka82 12.8.2007 14:21  536
mach no ja to prave nechtel pomoci toho vnorenyho, to sem tu dal jen jako inspiraci, abyste vedeli, co vlastne chci :-)

No ale asi to jinak nepujde, tak to tak udelam, diky
mach 12.8.2007 14:12  535
Straka82select sum(a) from (select a from tabulka order by date desc limit 0,3) x;

Vnoreny select musi byt pojmenovany.
straka82 Straka82 12.8.2007 14:02  534
jak zjistim sumu poslednich tri hodnot u nejakyho atributu?

chci udelat neco takovyho: select sum(a) from (select a from tabulka order by date desc limit 0,3);

nejak jednoduse, diky :)
makak makak 9.8.2007 22:01  533
BredyOmlouvam se, pokud to vyznelo, ze znam nejaky principialne lepsi zpusob cehokoliv. Ja jsem ani nezkoumal, co vlastne tvuj prikaz dela. Jen se mi zdal "podezrely", tak jsem si ho "prepsal" na not exist, se kterym si muj mozek uz poradil lepe. Zapis pomoci not exists mi prijde jednodussi (na pochopeni), nebot si ho mohu snadneji prevest do bezne reci, tot vse. Samozrejme, jak jsem napsal, pri dobre optimalizaci prekladu SQL by mela databaze provest tytez ukony.
huh huh 6.8.2007 17:37  532
Bredy [531]: a huh [500] jsi zkousel?

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

(c) 2001-2011 Lopuch.cz   
Kontakt