· 7 years ago · Nov 05, 2018, 02:08 PM
1<pre>
2DROP DATABASE IF EXISTS colorsearch;
3CREATE DATABASE colorsearch;
4USE colorsearch;
5
6DROP TABLE IF EXISTS productcolors;
7CREATE TABLE productcolors(
8 product BIGINT UNSIGNED NOT NULL,
9 color_h INT,
10 color_s INT,
11 color_l INT
12);
13
14ALTER TABLE productcolors
15ADD INDEX (color_h, color_s, color_l);
16
17<?php
18
19$products = 100;
20$colormax = 10;
21
22for ($product=1;$product<=$products;$product++){
23 for ($color=mt_rand(1,$colormax);$color>0;$color--){
24 $h = 360 + MT_RAND(0,360);
25 $s = mt_rand(0,100);
26 $l = mt_rand(0,100);
27
28 echo "INSERT IGNORE INTO productcolors SET product=$product, color_h=$h, color_s=$s, color_l=$l;\n";
29 }
30 echo "\n";
31}
32
33$h = 180;
34$s = 75;
35$l = 75;
36
37$delta_h = 5;
38$delta_s = 25;
39$delta_l = 15;
40
41$h += 360;
42 $sql = "SELECT * FROM productcolors WHERE ";
43 $sql .= "(color_h BETWEEN $h-$delta_h AND $h+$delta_h) AND ";
44 $sql .= "(color_s BETWEEN $s-$delta_s AND $s+$delta_s) AND ";
45 $sql .= "(color_l BETWEEN $l-$delta_l AND $l+$delta_l)";
46
47echo $sql;