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?