Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: MySQL informacijos skaičiavimas, atvaizdavimas

Parašė Narysx· 2009 Kov. 19 18:03:26
#1

Turiu duom. bazėje maždaug tokią lentelę:






Kokias užklausas reikėtų rašyti, kad skaičiuotų didžiausią skirtumą tarp kiek ir kiek2 ir atvaizduotų tą eilutę? Dar reikia, kad skaičiuotų didžiausią jų sumą. ?|

Redagavo Narysx· 2009 Kov. 19 18:03:45

Parašė Narysx· 2009 Kov. 19 19:03:06
#2

Bandžiau kažką tokio:

$pirma = mysql_fetch_array(mysql_query("SELECT kiek, kiek2 FROM lentele"));
if($pirma[0] > $pirma[1]){$uzklausa = mysql_query("SELECT kiek - kiek2 as kiek_skirtumas, kiek+kiek2 as kiek_pliusas ORDER BY kiek_skirtumas");
}
else
{
$uzklausa = mysql_query("SELECT kiek2 - kiek as kiek_skirtumas, kiek+kiek2 as kiek_pliusas ORDER BY kiek_skirtumas");
}




Bet nelb gavos... Gal bus lengviau jums su šitu kodu ir perdarysit. ;)

Redagavo Narysx· 2009 Kov. 19 19:03:19

Parašė Narysx· 2009 Kov. 19 20:03:24
#3

Nieks nežinot...? Ne tj ne, daugiau nebefloodinsiu, nepykit. :D

Parašė ex-it· 2009 Kov. 19 21:03:45
#4

$pirma = mysql_fetch_array(mysql_query("SELECT kiek , kiek2 FROM fusion_lenta
ORDER BY kiek + kiek2 DESC"));

$suma = $pirma[kiek] + $pirma[kiek2];

echo  $suma;




Parašė Narysx· 2009 Kov. 20 13:03:07
#5

Tai aš suprantu, bet man reikia, kad jeigu kiek2 yra daugiau už kiek, kad darytų kiek2 - kiek, o jei daugiau yra pats kiek, tada kiek - kiek2. :) Va aš jau pasidariau tvarkingai, kad darytų kiek - kiek2:

openside("name");

$uzklausa = mysql_query("SELECT kiek - kiek2 as skirtumas FROM fusion_lenta ORDER BY skirtumas");

while ($q = mysql_fetch_array($uzklausa))
{
$kiek = $q['kiek'];
$kiek2 = $q['kiek2'];
$skirtumas = $q['skirtumas'];

}

echo "$skirtumas<br>";

closeside();




Tik dabar reikia su if, else padaryti, kad jeigu kiek2 yra daugiau už kiek, tai kad ne iš kiek atimtų kiek2 (nes tada gautūsi skaičius su minusu), o atvirkščiai - kiek2 - kiek. ;]

Parašė ex-it· 2009 Kov. 20 14:03:26
#6

if($kiek2 > $kiek) { $skirtumas = $kiek2 - $kiek; }
else
{
$skirtumas = $kiek - $kiek2;
}




Parašė Narysx· 2009 Kov. 20 14:03:46
#7

O gal gali pilną kodą parašyt, jei nesunku? ;D
Ir dar man reikia atvaizduoti visą eilutę kur tas skirtumas yra... :) T.y. tuos kas, kas2...

Redagavo Narysx· 2009 Kov. 20 14:03:10

Parašė ex-it· 2009 Kov. 20 14:03:21
#8


openside("name");

$data = mysql_fetch_array(mysql_query("SELECT kiek, kiek2 FROM fusion_lenta"));

if($data[kiek2] > $data[$kiek]) { $selectas = "kiek2 - kiek"; }
else
{
$selectas = "kiek - kiek2";
}

$uzklausa = mysql_query("SELECT $selectas as skirtumas FROM fusion_lenta ORDER BY skirtumas");

while ($q = mysql_fetch_array($uzklausa))
{
$kiek = $q['kiek'];
$kiek2 = $q['kiek2'];
$skirtumas = $q['skirtumas'];

}

echo "$skirtumas<br>";





Parašė Narysx· 2009 Kov. 20 17:03:49
#9

Nesigauna... Jei kiek2 būna daugiau už kiek, vistiek daro kiek - kiek2 ir gaunasi neigiamas skaičius. :(

Parašė ex-it· 2009 Kov. 20 17:03:13
#10


openside("name");

$data = mysql_fetch_array(mysql_query("SELECT kiek, kiek2 FROM fusion_lenta"));

if($data[kiek2] > $data[kiek]) { $selectas = "kiek2 - kiek"; }
else
{
$selectas = "kiek - kiek2";
}

$q = mysql_fetch_array(mysql_query("SELECT $selectas as skirtumas FROM fusion_lenta ORDER BY skirtumas DESC"));



$kiek = $q['kiek'];
$kiek2 = $q['kiek2'];
$skirtumas = $q['skirtumas'];



echo "$skirtumas<br>";



Redagavo ex-it· 2009 Kov. 20 17:03:44

Parašė Narysx· 2009 Kov. 20 20:03:32
#11

Ištrynė mano antrą temą, tad čia parašysiu...

kas ir kas2 gali būti daug vardų. Pvz Audrius bus du kartus paminėtas ties kas ir tris kartus ties kas2, o Petriukas dešimt kartų ties kas ir vieną kartą ties kas2. Tokių vardų bus pilna... Man reikia užklausos, kuri suskaičiuotų koks vardas yra daugiausiai kartų paminėtas per abu stulpelius (kas, kas2) ir atvaizduotų tą vardą.

Parašė Narysx· 2009 Kov. 20 22:03:05
#12

Modų saite gavau tokį pasiūlymą:

SELECT * FROM lentele WHERE kas=kas2 ORDER BY count(*) DESC




?|

Parašė bruzgis· 2009 Kov. 20 23:03:22
#13

tai jeigu neigiamas skaicius, tai padaugint is -1 ir viskas
http://www.w3schools.com/Sql/ cia rasi ko reikia :)

Redagavo bruzgis· 2009 Kov. 20 23:03:20

Parašė Narysx· 2009 Kov. 20 23:03:56
#14

Ne ne, aš šitą problemą jau išsprendžiau... ;D Dabar žiūrėk į 11-ą žinutę. ;)

Parašė Narysx· 2009 Kov. 21 15:03:21
#15

Hm... Tai niekas nežinot?

Parašė Narysx· 2009 Kov. 22 14:03:58
#16

Tiek to... Pasakykit kaip suskaičiuot kas daugiausiai kartų paminėtas tik vienam stulpelį. Pvz kas.

Parašė ex-it· 2009 Kov. 22 15:03:48
#17

SELECT COUNT(lentele) AS viso FROM dbas
WHERE vardas='Idiotas'

Parašė Narysx· 2009 Kov. 22 18:03:00
#18

Ne taip man reikėjo, bet nieko, jau pasidariau. ;D

Parašė bdZ reborn· 2009 Kov. 24 20:03:39
#19

seip tokiems dalikams kaip skirtumas dveju skaiciu, kai reikia surasti didziausia skirtuma neatsizvialgent i zenkla naudojama MySQL ABS() funkcija.., tokiu budu galima isvengti daug uzklausu ir prarasytu kodu

SELECT
    *, ABS(kiek-kiek2) as skirtumas
FROM
    test_test
ORDER BY
    skirtumas DESC




jeigu reikia imetam LIMIT 1 ir gaunam... Tik reikia kartais paskaityti apie MySQl funkcijas...

o sumai naudok kita uzklausa su funkcija SUM().


vaiku darzelis

Parašė bad_user· 2009 Kov. 24 20:03:20
#20

Kadangi bdz apsireiškei tai kaip padaryti, kad viewforum.php byloje būtų viena ištraukimo užklausa, surūšiuojanti teisingai svarbias temas ir paprastas temas pagal datą. Pirmos turėtų būti lipnios temos, o po jų - paprastos.

Parašė bdZ reborn· 2009 Lie. 9 23:07:52
#21

gal perlenkiau su darzeliu :), bet tikrai grazei i tema iejo :D :D

seip kur realei galima sutrumpinti uzklausu kieki, taip ir reikia daryti.

o ne kurt po 10-20 vnt :|

cia mano tokia bloga nuomane :[

Parašė ozzWANTED· 2009 Lie. 10 00:07:25
#22

SoNG, tai daryk tiesiog output'ą į cache'ą, o tada listink cache'o duomenis. Cache'as turi būti turiu omenyje trumpalaikis.

Parašė bad_user· 2009 Lie. 10 00:07:20
#23

ozz čia buvo klausimas tik dėl frazės vaikų darželis, jog suvoktu, kad kaikurie šio portalo nariai yra pradžiamoksliai ;)