Witam,

Mam taki problem ze chce na stronie glownej wyswietlic po jednej losowej sentencji (serwis z sentencjami lacinskimi) z kazdej kategorii:

Kategorie:
Kod
CREATE TABLE `max_categories` (
  `id` smallint(6) NOT NULL auto_increment,
  `anchor` varchar(255) collate utf8_unicode_ci NOT NULL,
  `url` varchar(255) collate utf8_unicode_ci NOT NULL,
  `description` varchar(255) collate utf8_unicode_ci NOT NULL,
  `permission` enum('1','0') collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=25;

INSERT INTO `max_categories` (`id`, `anchor`, `url`, `description`, `permission`) VALUES (1, 'A', 'a', 'Sentencje na litere A', '1'),
...


Sentencje:
Kod
CREATE TABLE `max_latin_maxims` (
  `id` int(11) NOT NULL auto_increment,
  `latin` varchar(255) collate utf8_unicode_ci NOT NULL,
  `polish` varchar(255) collate utf8_unicode_ci NOT NULL,
  `uid` int(11) NOT NULL,
  `rank` decimal(10,0) NOT NULL,
  `counter` bigint(20) NOT NULL,
  `permission` set('1','0') collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `latin` (`latin`),
  FULLTEXT KEY `polish` (`polish`)
) ENGINE=MyISAM AUTO_INCREMENT=953 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=953;

INSERT INTO `max_latin_maxims` (`id`, `latin`, `polish`, `uid`, `rank`, `counter`, `permission`) VALUES (1, 'A capite ad calcem', 'Od głowy do pięty (Od stóp do głów).', 0, 0, 0, '1');
...


max_categories.url = upper(left(max_latin_maxims.latin,1)), czyli litera z kategorii rowna sie pierwszej literze z sentencji

aby pobrac dane pokolei ale nie losowo mam takie cos:
Kod
SELECT C.url AS letter, (

SELECT id
FROM max_latin_maxims
WHERE upper( left( latin, 1 ) ) = letter
LIMIT 1
) AS id, (

SELECT latin
FROM max_latin_maxims
WHERE upper( left( latin, 1 ) ) = letter
LIMIT 1
) AS latin, (

SELECT polish
FROM max_latin_maxims
WHERE upper( left( latin, 1 ) ) = letter
LIMIT 1
) AS polish, (

SELECT uid
FROM max_latin_maxims
WHERE upper( left( latin, 1 ) ) = letter
LIMIT 1
) AS uid, (

SELECT rank
FROM max_latin_maxims
WHERE upper( left( latin, 1 ) ) = letter
LIMIT 1
) AS rank, (

SELECT counter
FROM max_latin_maxims
WHERE upper( left( latin, 1 ) ) = letter
LIMIT 1
) AS counter
FROM max_categories C


ale aby pobrac losowo to zrobilem takie cos:
Kod
SELECT C.url AS letter, (

SELECT id
FROM max_latin_maxims
WHERE upper( left( latin, 1 ) ) = letter
ORDER BY RAND( )
LIMIT 1
) AS lid, (

SELECT latin
FROM max_latin_maxims
WHERE id = lid
LIMIT 1
) AS latin
FROM max_categories C


to latin jest NULL, jak to zrobic? questionmark.gif?

Z gory wielkie dzieki za pomoc  winksmiley.jpg