Autor Zpráva
Jack06
Profil
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
Pouzi LIMIT
Kajman_
Profil *
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
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
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 *
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
jo tam musí zůstat to count?
Kajman_
Profil *
Nemusí, důležité je to min vybírající pro každou galerii jediné (nejmenší) id.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: