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'),
...
`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');
...
`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
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
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?

Z gory wielkie dzieki za pomoc
