【发布时间】:2016-06-26 15:36:37
【问题描述】:
我无法从我的选择中获得正确的结果。表 wp_rdp_category_images 有 3 列:id(唯一)- category_name - category_image。
在下面的选择中,我需要最多 4 x category_name 和每个 category_name 中的 1 个 category_image。
有人可以帮我纠正这个选择吗?会非常好。提前致谢。
这里是php代码:
function show_game_category_images_func() {
$content = '';
$i = 1;
$record = $GLOBALS['wpdb']->get_results('
SELECT * FROM wp_rdp_category_images
ORDER BY `category_name`, RAND()
LIMIT 4
');
if($record){
foreach($record as $key => $rec){
// if($key == 'picture' && $rec != null && $rec != '')
$rec = '<img src="'.$upload_url.$record->category_image.'" width="150" height="150">';
if ($i == 1) {
echo '<span><img src="'.$upload_url.$rec->category_image.'" ></span>'; // even
}
if ($i == 2) {
echo '<span><img src="'.$upload_url.$rec->category_image.'" ></span><br>'; // even
}
else {
echo '<span><img src="'.$upload_url.$rec->category_image.'" ></span>'; // odd
}
$i++;
}
}
return $content;
}
add_shortcode('show_game_category_images', 'show_game_category_images_func');
我的 SQL:
SELECT * FROM `wp_rdp_category_images`
ORDER BY `category_name`, RAND() LIMIT 4
这是一个测试表:
CREATE TABLE IF NOT EXISTS `wp_rdp_category_images` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`category_name` varchar(32) NOT NULL,
`category_image` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;
INSERT INTO `wp_rdp_category_images` (`id`, `category_name`, `category_image`) VALUES
(1, 'natuur', 'natuur1.jpg'),
(2, 'natuur', 'natuur4.jpg'),
(4, 'aarde', 'aarde3.jpg'),
(5, 'sport', 'sport2.jpg'),
(6, 'aarde', 'aarde3.jpg'),
(7, 'auto', 'autogrijs.jpg'),
(8, 'auto', 'autowit.jpg'),
(9, 'auto', 'autoblack.jpg'),
(10, 'auto', 'autoroodzwart.jpg'),
(11, 'aarde', 'aarde1.jpg'),
(12, 'aarde', 'aarde2.jpg'),
(13, 'sport', 'sport4.jpg'),
(14, 'sport', 'sport3.jpg'),
(15, 'sport', 'sport1.jpg'),
(16, 'natuur', 'natuur2.jpg'),
(17, 'natuur', 'natuur3.jpg'),
(18, 'people', 'people1.jpg'),
(19, 'people', 'people2.jpg'),
(20, 'people', 'people3.jpg'),
(21, 'people', 'people4.jpg');
【问题讨论】:
-
你想要什么?让它选择正确的随机行!您有什么错误想与我们分享吗?您可以显示一些预期结果?
-
我也没有错误。只需要 4 个唯一的类别名称,包括相关图像。喜欢这个结果:natuur', 'natuur1.jpg aarde', 'aarde3.jpg auto', 'autowit.jpg people', 'people2.jpg
-
哦,那这变成了一个有趣的问题。这是我的赞成票(对于其中有趣的部分)。但请注意,并非所有数据都是唯一的(不包括 auto_inc)
-
没错。排除 id 字段,其余部分不是唯一的。我有很多带有图像的类别名称。但我需要最多 4 个才能从我的选择中获得。表中的 4 个唯一名称。我没有提及一个独特的领域。
-
澄清一下:听起来您想要一个包含四个随机选择的类别的结果集。与每个类别相关联,您希望从该类别的图像中随机选择一张图像。那是对的吗?请edit您的问题澄清一下。