15. november 2005 - 10:49Der er
26 kommentarer og 1 løsning
Lidt mere eller lidt mindre, plus-minus et par stykker
Jeg leder efter en sql sætning der er konstrueret således at den udvælger alle tal fra en database +/- et par stykker...
Lidt forklaring: Jeg har en masse billeder i en database (dvs. deres filnavn) og hvor brede/høje de er, hvor jeg så laver en SELECT DISTINCT `w`,`h` FROM `blabla` WHERE 1, dette giver mig så alle de forskellige bredde/højder der er og smider dem ind i en liste - men nogen af billederne er 100*100 og nogen er 101*101, kan jeg ikke på en eller anden måde få dem der ligger inden for en margin på f.eks. 5 pixels med i min oprindelige SQLsætning?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Det kan ikke smides ind i en stor. Se f.eks dette eks:
width height 100 100 104 104 108 108
Hvordan forventer du den skal "gruppere" dem med +/- 5?? Du har jo ikke noget der indikere at 100 er primær, og hvis det er 105 bliver alle 3 samlet til en..
Det lyder lidt til at du skal udvælge inden for bestemte områder i stedet: select * from enTabel where width>=0 and width<=19 select * from enTabel where width>=20 and width<=39 select * from enTabel where width>=40 and width<=59 ...
Disse områder kan du evt have liggende i en tabel, som så kan joines.
måske er der alligevel visse muligheder lidt afhængig af præcis hvad du vil
eksempel:
mysql> CREATE TABLE dim ( -> id INTEGER PRIMARY KEY, -> w INTEGER, -> h INTEGER -> ); Query OK, 0 rows affected (0.01 sec)
mysql> mysql> INSERT INTO dim VALUES (1,100,100); Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO dim VALUES (2,104,104); Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO dim VALUES (3,108,108); Query OK, 1 row affected (0.00 sec)
mysql> mysql> SELECT * -> FROM dim; +----+------+------+ | id | w | h | +----+------+------+ | 1 | 100 | 100 | | 2 | 104 | 104 | | 3 | 108 | 108 | +----+------+------+ 3 rows in set (0.00 sec)
mysql> mysql> SELECT ((w + 5) DIV 10)*10,((w + 5) DIV 10)*10,COUNT(*) -> FROM dim -> GROUP BY ((w + 5) DIV 10)*10,((w + 5) DIV 10)*10; +---------------------+---------------------+----------+ | ((w + 5) DIV 10)*10 | ((w + 5) DIV 10)*10 | COUNT(*) | +---------------------+---------------------+----------+ | 100 | 100 | 2 | | 110 | 110 | 1 | +---------------------+---------------------+----------+ 2 rows in set (0.00 sec)
mysql> mysql> SELECT * -> FROM dim -> WHERE ((w + 5) DIV 10)*10=100 AND ((h + 5) DIV 10)*10=100; +----+------+------+ | id | w | h | +----+------+------+ | 1 | 100 | 100 | | 2 | 104 | 104 | +----+------+------+ 2 rows in set (0.00 sec)
Jouw, det ser da ud til at gøre et eller andet, men hvad er det jeg skal pille ved for at får margin'en til at blive større? Jeg har prøvet at skrue op for den du har sat til 5, men synes ikke rigtigt det hjælper, kan det passe?
Den giver en fejl med DIV (har bare gået ud fra at DIV skulle være det samme som at dividere med ...
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DIV '10' ) *10, ( ( w +5 ) DIV '10' ) *10 FROM `mobil` LIMI
Jeg har den her side http://esbenboye.dk/mobil/index2.php?left=billeder&right=preview Og som det ses, har jeg sorteret dem i listen efter bredde/højde. Der er nogen af dem der kun adskiller sig med 2-3-4 pixels, dem vil jeg gerne have i samme pulje, altå, så dem der er 120,121 og 123 pixels brede/høje kommer i samme pulje!
Mine rækker: id fil w h +-----+-----------+-----+------+ | 1 | 008.jpg | 128 | 128 | | 2 |simps.gif | 127 | 128 | | 3 |xfiles.jpg | 128 | 129 | | 4 |billede.jpg| 230 | 200 | +-----+-----------+-----+------+ Og der er det så jeg gerne vil have 008.jpg, simps.gif og xfiles.jpg til at blive spyttet ud i samme pulje, så jeg på listen har en der hedder f.eks. 127*128, så det passer sådan så nogenlunde... Håber det forklarer lidt bedre!
Jeg har prøvet med en SQL der ser således ud SELECT ((`w` + 5) DIV 10)*10,((`w` + 5) DIV 10)*10,COUNT(*) FROM `mobil` GROUP BY ((`w` + 5) DIV 10)*10,((`w` + 5) DIV 10)*10; og den giver den førnævnte fejl ved DIV...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.