Autor Zpráva
Jakub46548
Profil *
Ahoj.
Potřebuji vypsat všechny názvy - ale jen jedenkrát - bez duplicit.
Mám tabulku, kde jsou sloupce ID a Název.

ID - auto increment, PRIMARY
Název - varchar(100)

Když jsem neměl sloupec ID, tak se mi vypsání záznamů pomocí distinct podařilo. Ale se sloupcem ID to již nechodí.

Mohl byste někdo poradit?
Taps
Profil
Jakub46548:
tak při zjištování duplicit nepoužívej sloupec ID....
Jakub46548
Profil *
potřebuji ho pak dále při výpisu.
Taps
Profil
Jakub46548:
zkus ukázat zdrojový kod
Jakub46548
Profil *
$select=mysql_query("SELECT DISTINCT nazev,id FROM tabulka) or die(mysql_error());


To si vypisuji do selectu, kde value je ID.
Jakub46548
Profil *
--
-- Struktura tabulky `test`
--

CREATE TABLE IF NOT EXISTS `test` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `nazev` varchar(100) COLLATE utf8_czech_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=4 ;

--
-- Vypisuji data pro tabulku `test`
--

INSERT INTO `test` (`id`, `nazev`) VALUES
(1, 'jahoda'),
(2, 'jahoda'),
(3, 'merunka');



$select=mysql_query("SELECT DISTINCT nazev,id FROM test") or die(mysql_error());
while($r=mysql_fetch_assoc($select)){
echo $r[nazev];
}


Když z dotazu vymažu ID, tak to funguje, ale s ID ne.
Tori
Profil
Našla jsem tuhle možnost, vypadá zajímavě:
select *, count(nazev) 'cnt' from `test` group by nazev having cnt >=1;


edit: Musí se navíc vytvořit dočasná tabulka, takže to trochu zpomaluje. Pokud nepotřebujete řazení (které je u GROUP BY automaticky), přidejte "ORDER BY NULL".
▼Jakub46548
Profil *
Právě teď, se mi to podařilo pomocí:
SELECT DISTINCT nazev,id FROM test GROUP BY nazev


tvůj způsob také funguje.
Tak děkuji za pomoc.
Kcko
Profil
▼Jakub46548:
GROUP BY tam není potřeba.
Kajman_
Profil *
Kcko:
Je, protože tam má id. Takže vybírat pouze název bez id, nebo použít group by.

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: