Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Countinimas iš DB
Parašė Narysx· 2009 Sau. 22 21:01:24
#1
Tarkim savo
mysql. duom. bazėje turiu lentelę su tokia struktūra:
pirmo_vardas |
pirmo_taskai |
antro_vardas |
antro_taskai
ir tarkim įrašuose ties pirmo_vardas 2 kartus paminėtas vardas
Jonas ir 3 kartus paminėtas vardas
Dainius, o ties antro_vardas 2 kartus paminėtas vardas
Dainius ir 3 kartus paminėtas vardas
Tomas.
Kokį kodą rašyt, kad vaizduotų kas daugiausiai kartų paminėtas? Viskas tūrėtų atrodyti taip:
1. Dainius - 5 kartai.
2. Tomas - 3 kartai.
3. Jonas - 2 kartai.
?|
Parašė ramon· 2009 Sau. 22 21:01:05
#2
COUNT() & LIKE
Parašė Narysx· 2009 Sau. 22 22:01:43
#3
Radau tokį kodą:
$query = "SELECT type, COUNT(name) FROM products GROUP BY type";
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
echo "There are ". $row['COUNT(name)'] ." ". $row['type'] ." items.";
echo "<br />";
Bet čia viską ima tik iš vieno row. ?| O pas mane yra du - pirmo vardas ir antro vardas. ?|
Any idea's? :?
Redagavo Narysx· 2009 Sau. 22 22:01:47
Parašė ramon· 2009 Sau. 22 22:01:18
#4
Juk paprasta, rasai count() su kablieliu ir irasai kaip koki kita pavadinima ir ji poto atvaizduoji...
$query = "
SELECT type,
COUNT(name1) as name_a,
COUNT(name2) as name_b
FROM products
GROUP BY type";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "There are ". $row['name_a'] ." ". $row['type'] ." items.";
echo "<br />";
}
Parašė ex-it· 2009 Sau. 22 22:01:52
#5
Man regis jis nori is 2 lenteliu imti, o ne is 1 :) arba nesupratau.
Parašė ramon· 2009 Sau. 22 22:01:29
#6
Jei is 2 ar daugiau tegul nauduojasi
LEFT JOIN funk...
Parašė Narysx· 2009 Sau. 22 22:01:29
#7
Tai, bet vistiek man pagal šitą tavo duotą kodą neina padaryti tai, ką parašiau pirmam poste.
ex-it parašė:
Man regis jis nori is 2 lenteliu imti, o ne is 1 :) arba nesupratau.
ramon parašė:
Jei is 2 ar daugiau tegul nauduojasi LEFT JOIN funk...
Ne iš 2 lentelių, o iš 2 row toje pačioje lentelėje.
Redagavo Narysx· 2009 Sau. 22 22:01:30
Parašė ramon· 2009 Sau. 22 22:01:49
#8
Tai darik td LIKE ir poto po
while() {
t.y. kur atvaizduoji rasai
print COUNT(a_a)."\n".COUNT(a_b);
Redagavo ramon· 2009 Sau. 22 22:01:00
Parašė Narysx· 2009 Sau. 22 22:01:08
#9
Nesigauna nieko. :s Arba errorus gaunu, arba pievas vaizduoja. :)
Parašė ramon· 2009 Sau. 22 23:01:09
#10
Tai tu gal papostink savo rasoma sql uzklausa?
Parašė Narysx· 2009 Sau. 22 23:01:30
#11
Vienas variantas:
openside("name");
$query = "
SELECT date,
COUNT(ho_team) as name_a,
COUNT(aw_team) as name_b
FROM fusion_rezu_system
GROUP BY ho_team";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "There are ". $row['name_a'] ." ". $row['type'] ." items.";
echo "<br />";
}
closeside();
Krč man reikia, kad rodytų top 5 pavadinimus ties pirmo_vardas ir antro_vardas (skaityti pirmą mano postą), tik kad per juos abu kartu. nu ta prasme jei Jonas du kartus paminėtas pirmo_vardas ir vieną kartą paminėtas antro_vardas, tai skaitos, kad Jonas jau paminėtas 3 kartus.
Redagavo Narysx· 2009 Sau. 22 23:01:26
Parašė ramon· 2009 Sau. 22 23:01:36
#12
Viskas tau duota, tereikia moketi pasianauduot....
Parašė Narysx· 2009 Sau. 22 23:01:11
#13
Tai, kad davei man 2 skirtingus kodus, gal net 3 ir vienas iš jų net nepilnas... Sunku man pasinaudot, nemoku aš dar tiek kiek tu. :s
Parašė ramon· 2009 Sau. 22 23:01:49
#14
Taigi sakau select'ink laukelis, kurios nori nori skaiciot kiek kartu ir t.t. rasyk i COUNT as pavadinimas ir poto GROUP BY pavadinimas, bet seip parasik norm konkreciau ko tau reik...
Parašė Narysx· 2009 Sau. 22 23:01:58
#15
Gerai... Parašau viską konkrečiai ir laukiu kodo. ;D
Darau čia tokią rezultatų sistemą ir reikia padaryti TOP 5 aktyviausių komandų panelę.
Mysql struktūra šiai minutei tokia:
o tai reiškia, kad panelėje tūrėtų atvaizduoti viską taip:
1. Barcelona - 3 kartai.
2. ManuTd - 1 kartai.
3. Inter - 1 kartai.
4. Chelsea - 1 kartai.
5. Arsenal - 1 kartai.
Kaip jau ir sakiau vaizduoja aktyviausias ekipas...
Aiškiau manau paaiškint neįmanoma. ;D Jei ką, lentelė: fusion_rezu_system.
Parašė Narysx· 2009 Sau. 22 23:01:19
#16
Tai nebepadėsi? ;D
Parašė ramon· 2009 Sau. 22 23:01:03
#17
Laiko turesiu, parasysiu ta query...
Parašė ramon· 2009 Sau. 23 00:01:06
#18
<?
$x = "fusion_rezu_system";
$q = "
select ho_team, count(ho_team) kiek
from {$x }
group by ho_team
limit 5";
$a = mysql_query($q) or die(mysql_error());
while($db = mysql_fetch_array($a)) {
echo "{$db['ho_team']} - {$db['kiek']} kartai.<br />";
}
?>
Tu apie tai kalbejai?
Redagavo ramon· 2009 Sau. 23 00:01:03
Parašė Narysx· 2009 Sau. 23 00:01:13
#19
Matai, tu čia imi tik iš ho_team, bet pvz jei ta pati komanda yra panaudota ir ho_team ir aw_team, tai jau gaunas vienu skaičium per mažai. :)
Viskas čia buvo gerai, tik tiek, kad ėmei tik iš vieno row (ho_team). Reikia sudėti dar ir su aw_team ir tada vaizduoti kas daugiausiai. ;)
Redagavo Narysx· 2009 Sau. 23 00:01:44
Parašė ramon· 2009 Sau. 23 00:01:46
#20
Nejaugi taip sunku pagalvot?
select ho_team, count(ho_team) kiek
keisk i
select ho_team, count(ho_team)+count(aw_team) kiek
Parašė Narysx· 2009 Sau. 23 00:01:18
#21
Jei taip padarau pievas vaizduoja. Net ne tokį rungtynių skaičių, kokį komanda ištikrųjų yra sužaidusi. Per didelį rašo.
Parašė Narysx· 2009 Sau. 23 00:01:02
#22
ramon, rašant
select ho_team, count(ho_team)+count(aw_team) kiek
nesamones atvaizduoja. Net ne tokį sužaistų komandos varžybų skaičių, koks ištikrųjų yra.
Parašė Narysx· 2009 Sau. 23 17:01:25
#23
Tai ar padėsit kas nors? :s
Parašė Narysx· 2009 Sau. 23 19:01:13
#24
Dw žiauriai reikia šito dalyko. :| Lb lb prašau.
Parašė MAnjack· 2009 Sau. 23 19:01:40
#25
nu taip AND aw_team.
Parašė Narysx· 2009 Sau. 23 21:01:53
#26
Bandžiau ir taip. Tada kažkaip ten atrodo daugino. Vienu žodžiu blogą skaičių rodė.
Parašė Narysx· 2009 Sau. 24 14:01:12
#27
Gal dar kas nors pasiūlymų turit? ?|
Parašė ex-it· 2009 Sau. 24 22:01:59
#28
kiek sumokėtum už padarymą :]
Parašė Narysx· 2009 Sau. 24 22:01:14
#29
5lt sms, nes didžiąją dalį kodo ramon jau padarė. Tik reikia pakeist, kad skaičiuotų iš 2 row. Dw padarykit kas nors. Žinau, kad yra tokių, kuriems čia tikrai nesunku, o dar 5lt gausit. :D
Parašė bad_user· 2009 Sau. 24 23:01:50
#30
Rašyk į skype. Sąsk papildimas pravers ;)
Parašė Narysx· 2009 Sau. 25 00:01:24
#31
SoNG ant greitųjų padaryt nepavyko, o laiko jis gaišt nenori, tad sanderis su juo nepavyko. ;D Gal dar kas pamėginsit?
Parašė ex-it· 2009 Sau. 25 00:01:13
#32
Tas pats ir man atvejis kai songui :D
Parašė Narysx· 2009 Sau. 25 01:01:23
#33
;[ Gal dar kas pamėgintumėt?