09. april 2005 - 11:51
Der er
34 kommentarer
select mindste værdi
hej, nogle der kan hjælpe mig, jeg har noget data i mysql, en slags pris top 3 |produkt|pris1|pris2|pris3 |test1|20|23|24.50 |test2|19|10|23 hvordan selecter jeg sådan at jeg får mindste værdi af pris1,pris2,pris3 ?
Annonceindlæg fra Computerworld
09. april 2005 - 11:53
#1
Select MIN(pris3) from tabel ?
09. april 2005 - 11:54
#2
altså, den skal tage den mindste af alle pris1,pris2,pris3 og gerne også komme med output om hvilken den tog.. muligt?
09. april 2005 - 11:57
#3
SELECT MIN(pris1) as Priset, MIN(pris2) as Pristo, MIN(pris3) as Pristre FROM test1, test2; ved ikke om det virker:) længe siden
09. april 2005 - 11:59
#4
man vælger f.eks. kun produkt test1, og så skal man finde den sidste pris af pris1, 2, 3 osv.. men jeg kan regne ud jeg skal vist lave noget php der tjekker det? man kan nok ik i mysql
09. april 2005 - 12:00
#5
SELECT MIN(pris1,pris2,pris3) as Pris FROM test1... vil det virke?
09. april 2005 - 12:03
#6
nok mere SELECT MIN(pris1) as Priset, MIN(pris2) as Pristo, MIN(pris3) as Pristre FROM test1;
09. april 2005 - 12:06
#7
så får jeg da Priset, pristo, pristre, så kan jeg ligeså godt select pris1,2,3 ?
09. april 2005 - 12:11
#8
nåhh okay.. nu forstå jeg hvad du mener:) jeg troede du vil have den mindste værdi i hele kolonne i hver!
09. april 2005 - 12:12
#9
okay jeg ved ikke med sql så... jeg ville nok printe det ud via. asp / php
09. april 2005 - 12:18
#10
Måske: SELECT LEAST(MIN(pris1), MIN(pris2), MIN(pris3)) as pris FROM tabel
09. april 2005 - 12:21
#11
argument is not a valid MySQL result resource
09. april 2005 - 12:22
#12
SELECT produkt,IF(pris1<pris2,IF(pris1<pris3,pris1,pris3),IF(pris2<pris3,pris2,pris3)),produkt FROM tabel vil være mit bud
09. april 2005 - 12:25
#13
virker ikke, hvis jeg bare henter dem ud, er der så nogle der ved hvad man via php nemt og enkelt kan finde den der er mindst vær?
09. april 2005 - 12:25
#14
Sjovt nok: SELECT LEAST(MIN(pris1), MIN(pris2), MIN(pris3)) as pris FROM tabel fungerer fint nok for mig?
09. april 2005 - 12:26
#15
ok, der er pris op til 10 ..
09. april 2005 - 12:26
#16
hmm
09. april 2005 - 12:26
#17
I php hedder det osse min(), så der kan du finde den med: $pris = min($pris1, $pris2, $pris3);
09. april 2005 - 12:28
#18
SELECT LEAST(MIN(pris1), MIN(pris2), MIN(pris3)) as pris FROM tabel måske den virker her også, jeg har nogle felter der er tomme, så tager den sikkert det som mindst? kan man sige at det skal være dem der er indhold i ? altså over "ingen ting"
09. april 2005 - 12:34
#19
Hvad hvis du sætter standardværdien for tomme felter til NULL, så bliver de ikke taget med i sammenligningen.
09. april 2005 - 12:58
#20
er der nogle begrænsninger på LEAST, jeg kan kun få den til at virke med op til 4 felter..
09. april 2005 - 13:49
#21
Det tror jeg ikke. Eller måske er der en praktisk begrænsning, men jeg har lige testet med 50 værdier, det går fint.
09. april 2005 - 17:45
#22
ja, det når der er nogle felter uden indhold så virker det ikke :( det gælder også funktionen i php. så vælger den at der hvor der "tomt" er mindst.. kan man lave en select hvor den ikke tager dem med "tomt" felt eller?
09. april 2005 - 17:49
#23
I php, hvis man har $test1 = "1"; $test2 = ""; $test3 = ""; $test4 = ""; $test5="6"; $test6="7"; og laver en MIN($test1,$test2,$test3,$test4,test5); virker det ikke, tror det fordi den ser jo sådan ud MIN(1,,,6,7);
09. april 2005 - 18:07
#24
Har du ikke mulighed for at lave felterne med NULL, som jeg foreslog tidligere?
09. april 2005 - 18:10
#25
det har jeg lavet.. dvs. der NULL når der ingen ting er i dem..
09. april 2005 - 18:17
#26
felterne er FLOAR, fordi det vist mest korrekt til tal. dvs. når der intet indhold er, er der NULL/0,
09. april 2005 - 18:26
#27
FLOAT er ikke godt til beløb. DECIMAL/NUMERIC er meget bedre. NULL og 0 er to meget meget meget forskellige værdier.
09. april 2005 - 18:31
#28
DECIMAL dur ikke, da alle beløb er med 120.25 osv.
09. april 2005 - 18:34
#29
Der er vel ikke noget problem med at putte 120.25 i en DECIMAL(12,2) ?
09. april 2005 - 22:52
#30
12,2? . . det har jeg ik helt styr på, vil du forklare?
09. april 2005 - 22:54
#31
12 tegn - 2 efter komma
09. april 2005 - 23:40
#32
nu har jeg fået SELECT LEAST(MIN(pris1), MIN(pris2), MIN(pris3)) as pris FROM tabel til næsten at virke. dvs. et tal i databasen på: 695.93 bliver når det kommer ud med overstående funktion til: 695.92999267578 giver det mening?
10. april 2005 - 00:22
#33
Det må være noget med databasens interne repræsentation af værdier, men hvis du runder af til 2 decimaler (evt. i php med number_format() eller lign.) er den vel hjemme?
hvis man bruger SELECT LEAST hvorfor vælger den så 1000.98 i tilfælde hvor man har 345.54 - 432.98 - 987.56 - 1000.98 tusinde er da ikke mindst?
Computerworld tilbyder specialiserede kurser i database-management