Autor | Zpráva | ||
---|---|---|---|
unlucky Profil |
#1 · Zasláno: 19. 4. 2013, 17:19:26
Vzorek:
id - text 1 - jedna 2- dva 3- tri 4-ctyri 5-pet 6-sest 7-sedm 8-osm 9-devet Chci zobrazit clanek s id 6 a k tomu 3 novejsi a 3 starsi, tedy: id: 3,4,5 6 7,8,9. Normalne bych na to pouzil 3 dotazy, 1 pro clanek, 1 pro starsi a 1 pro novejsi. Lze to vsechno dat do jednoho dotazu? |
||
Tori Profil |
Pokud jsou řazené podle ID, tak je to jednoduché*. Pokud podle jiného sloupce, viz Některé časteji řešené dotazy pro MySQL - FAQ » Data pro další a předchozí záznam vůči $id, když jsou položky seřazeny podle jiného sloupečku než id
* = taky union, ale bez joinů. |
||
Joker Profil |
#3 · Zasláno: 19. 4. 2013, 17:35:16
unlucky:
> Chci zobrazit clanek s id 6 a k tomu 3 novejsi a 3 starsi, tedy: > id: 3,4,5 6 7,8,9. Podle čeho se poznají ty nejstarší a nejnovější? |
||
unlucky Profil |
#4 · Zasláno: 19. 4. 2013, 18:04:56
Joker:
nikoli nejstarsi ci nejnovesi, pouze starsi a novejsi. Podle id |
||
unlucky Profil |
rozhodl jsem se, ze na to pouziju jiny dotaz. Bohuzel mi ale nefunguje. NeZobrazuje se mi 6 zaznamu.
(select w.id,w.word from word w left join interpretation i on i.word_id=w.id where i.from_lang='en' and i.to_lang='cz' and w.id<229 limit 3) union (select w.id,w.word from word w left join interpretation i on i.word_id=w.id where i.from_lang='en' and i.to_lang='cz' and w.id>229 limit 3) order by id asc |
||
Jan Tvrdík Profil |
#6 · Zasláno: 22. 4. 2013, 03:10:41
unlucky:
Nemělo by order by id asc být v každém z těch dvou poddotazů? Teď řadíš až výsledek toho union .
|
||
Kajman Profil |
#7 · Zasláno: 22. 4. 2013, 09:06:47
unlucky:
„NeZobrazuje se mi 6 zaznamu“ Což se může stát, pokud tam není tolik odpovídajících záznamů. V první závorce chybí order by w.id desc, v druhé order by w.id asc. Vnější spojení postrádá smyslu, když použijete ve where podmínku na připojený sloupec. Pokud může být k jednomu slovu více interpretací, tak by to chtělo použít distinct v obou závorkách. Osobně bych použil union all, ať se nemusí kontrolovat shody, které by neměly nastat. |
||
unlucky Profil |
#8 · Zasláno: 22. 4. 2013, 21:16:05
Kajman:
Odpovidajici zaznamy tam urcite jsou. (select w.id,w.word from word w left join interpretation i on i.word_id=w.id where i.from_lang='en' and i.to_lang='cz' and w.id<299 order by w.id desc limit 3) union (select w.id,w.word from word w left join interpretation i on i.word_id=w.id where i.from_lang='en' and i.to_lang='cz' and w.id>299 order by w.id asc limit 3 ) |
||
unlucky Profil |
#9 · Zasláno: 23. 4. 2013, 18:03:34
Musel jsem pridat distinct a uz to funguje
(select distinct w.id,w.word from word w left join interpretation i on i.word_id=w.id where i.from_lang='en' and i.to_lang='cz' and w.id<299 order by w.id desc limit 3) union (select distinct w.id,w.word from word w left join interpretation i on i.word_id=w.id where i.from_lang='en' and i.to_lang='cz' and w.id>299 order by w.id asc limit 3 ) |
||
Časová prodleva: 11 let
|
0