Autor | Zpráva | ||
---|---|---|---|
Jack06 Profil |
#1 · Zasláno: 23. 1. 2011, 23:44:52
Zdravím, chtěl bych poradit k jednomu dotazu. Mám tabulku s kategoriema fotek a pak tabulku s fotkama, která má referenci na id (kategorie.id, fotky.kategorie_id) a potřebuji vybrat všechny alba a ke každému vždy jen jeden řádek z fotek..
Efekt zobrazení všech aleb s jedním obrázkem z alba jako ukázkou. Podařilo se mi jen join na všechny záznamy, ale nejde mi zadat jen na jednu tu fotku. Díky za pomoc. |
||
pcmanik Profil |
#2 · Zasláno: 24. 1. 2011, 07:03:43 · Upravil/a: pcmanik
Pouzi LIMIT
|
||
Kajman_ Profil * |
#3 · Zasláno: 24. 1. 2011, 08:56:21
Tady se řešilo něco podobného (ale fotky měly navíc příznak, zda se mají použít jako náhled fotogalerie), asi bude stačit to zjednodušit.
http://diskuse.jakpsatweb.cz/?action=vthread&forum=28&topic=105518 |
||
Jack06 Profil |
#4 · Zasláno: 24. 1. 2011, 09:14:42
pcmanik:
limit podle mě nejde efektivně použít pokud nebudu mít dotaz o dvou selectech v sobě... Kajman: Díky podívám se na to :-) |
||
Jack06 Profil |
#5 · Zasláno: 24. 1. 2011, 10:23:00
Tak nevím.... nějako ať to zkouším upravit jak to zkouším, tak buď mi to vybere jen jednu fotogalerii a k tomu fotku, nebo všechny fotogalerie ale z nich i všechny fotky :-(
database: CREATE TABLE IF NOT EXISTS `galerie` ( `id` int(11) NOT NULL auto_increment, `name` varchar(45) collate utf8_czech_ci NOT NULL, `dates` varchar(10) collate utf8_czech_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `fotky` ( `id` int(11) NOT NULL auto_increment, `name` text character set utf8 NOT NULL, `place` int(1) NOT NULL, `galerie_id` int(11) NOT NULL, PRIMARY KEY (`id`,`galerie_id`), KEY `fk_fotky_galerie1` (`galerie_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1; z tabulky galerie vybírám všechny (name as g_name) a id a podle id potřebuji vybrat z "fotky" vždy jen jednu fotku odpovídající id galerie. |
||
Kajman_ Profil * |
#6 · Zasláno: 24. 1. 2011, 11:02:54
select n.fotek, fo.*, g.name g_name, g.dates from (select f.galerie_id, count(f.id) as fotek, min(f.id) idNahledu from fotky f group by f.galerie_id) n join fotky fo on n.idNahledu = fo.id join galerie g on n.galerie_id = g.id |
||
Jack06 Profil |
#7 · Zasláno: 24. 1. 2011, 11:16:39
jo tam musí zůstat to count?
|
||
Kajman_ Profil * |
#8 · Zasláno: 24. 1. 2011, 12:30:46
Nemusí, důležité je to min vybírající pro každou galerii jediné (nejmenší) id.
|
||
Časová prodleva: 13 let
|
0