Topic: kainu atrinkimas

Sveiki gudruoliai :)
noriu pasidaryti atrinkimą mažiausios kainos iš saugomų ir jos palyginimą su savo turima.

Lentelės struktūra tokia:
mano_kaina | kaina1 | kaina2 | kaina3 | kaina4

Kaip man išrinkti iš visų kainų mažiausią ir palyginti su manąja?
Bandžiau su Least, bet nemoku ištraukti į palyginimą.. Gal pagelbėsit su kodu?

2 (edited by aivaras37 2014-09-09 12:36:11)

Re: kainu atrinkimas

?

neaiškiai skamba, pagal idėją tu nori SELECT mano_kaina, LEAST(kaina1, kaina2, kaina3, kaina4) FROM `lenta`;

O kaip palyginti nori? T.y. tau santykio kainų reikia? Skirtumo?

Re: kainu atrinkimas

Ačiū už greitą atsakymą.
Aš kaip įsivaizduoju, man reikia sąrašiuko su šitom reikšmėm. Tada aš su jomis jau galėsiu kokį CSV susigeneruoti.

Select mano_kaina,* from table where LEAST(kaina1, kaina2, kaina3, kaina4) < price

Aš norėčiau gauti 2 kainas, t.y. mano_kaina ir mažiausią iš esamų. (pradžiai;)

Re: kainu atrinkimas

Bet juk tavo užklausa tą ir daro?

Re: kainu atrinkimas

Heh, matyt klaidą kažkur buvau syntaxėj padaręs, kad grąžindavo problemą su LEAST :)
Dar klausimas, kaip filtruoti, kad netrauktų nemano nulinių kainų? Koks apjungimas su tikrinimu !=0 ?

Re: kainu atrinkimas

priklauso nuo kainos default reiksmes gali buti ir LEAST(kaina1, kaina2, kaina3, kaina4) IS NOT NULL ir LEAST(kaina1, kaina2, kaina3, kaina4) != 0, tiesiog isbandyk ir patikrink :)

Re: kainu atrinkimas

man kažkodėl neleidžia ir grąžina nulį rezultatų abejais atvejais. Lentelės struktūra:
sku     varchar(64)    NO     PRI     NULL   
price     float(64,2)    NO         NULL   
1price     float(64,2)    NO         NULL   
2price     float(64,2)    NO         NULL   
3price     float(64,2)    NO         NULL   
4price     float(64,2)    NO         NULL   

galbūt dėl duomenų tipo esantys '0' nėra įtraukiami į paiešką..
Dabar mano query atrodo taip:
SELECT *
FROM prices
WHERE LEAST( `1price` , `2price` , `3price` , `4price` ) < price
AND LEAST( `1price` , `2price` , `3price` , `4price` ) >0
ir bandžiau su IS NOT NULL ir >1 ir !=0 ir !=0.00

Gal ką praleidau?

Re: kainu atrinkimas

CREATE TABLE `tmp` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `price` float DEFAULT NULL,
  `1price` float DEFAULT NULL,
  `2price` float DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `tmp` (`id`, `price`, `1price`, `2price`)
VALUES
    (1, 10.331, 2, 1),
    (2, 2.11, 2.1, 2.12),
    (3, 10, 123, 1254),
    (4, 30000, 3123120, 3123120),
    (5, 234, 0, 1);
select * from tmp where least(1price, 2price) < price and least(1price, 2price) > 0;
id    price    1price    2price
1    10.331    2    1
2    2.11    2.1    2.12

Re: kainu atrinkimas

Ačiū, bet man atrodo aš matau problemą su 0. Pas mane jie formatu 0.00, o pas tave tik 0. Kaip man konvertuoti duomenis, arba kaip pasirašyti užklausą, kad nesiskirtų skaičiai?

Re: kainu atrinkimas

Padaryk savo lentelės struktūros ir duomenų dump'ą, bus paprasčiau rasti kame bėda :)