Just nu i M3-nätverket
Gå till innehåll

Summera värden i rader?


menJada1

Rekommendera Poster

Jag vill summera värdena i alla rader med variabel $imressions för att få en totalvärde.

 

Tips?

 

$sql = mysql_query("SELECT * FROM $table WHERE annons_id = '$annons_id' ORDER BY datum DESC");

while ($rad = mysql_fetch_array($sql)) {

$datum = $rad["datum"];

$impressions = $rad["impressions"];

 

Länk till kommentar
Dela på andra webbplatser

Jag är lite osäker på vad du menar, men jag antar att du vill räkna ihop hur många gånger någon har tittat på en annons.

 

Jag vet dock inte om du lägger till en extra rad för varje gång någon tittar på annonsen, det verkar så eftersom du vill summera ihop fältet som heter impressions. I annat fall räcker det ju med count() funktionen.

 

Säg att impressions alltid innehåller en etta, då känns det lite onödigt att använda sig av SUM() eftersom det då räcker med att se hur många rader som returneras. Antingen med COUNT() eller oxå med PHP funktionen mysql_num_rows().

 

Men, säg att du plussar på impressions varje gång någon tittar på annonsen, då blir du tvungen att använda dig av SUM() som du kan läsa lite om här: http://www.mysql.com/doc/en/Group_by_functions.html#IDX1353

 

Det är möjligt att mysql manualen innehåller mer information om funktionen, men jag har inte riktigt lärt mig att hitta i den om jag ska vara ärlig! :)

 

Du måste alltså använda GROUP BY för att kunna köra en SUM funktion. Eftersom du troligen vill veta hur många impressions som ett visst annons_id har så skulle denna rad kanske göra det du vill:

 

SELECT * FROM $table WHERE annons_id = $annons_id GROUP BY annons_id ORDER BY datum DESC

 

Med SQL strängen ovan kan du alltså ta ut alla annonser om du så vill och ändå få ut summan per annons_id.

 

[redigerat] Jag ska nog tillägga att jag själv inte hade skapat sql strängen på det sätt som du gör om nu jag har uppfattat din fråga rätt vill säga...

 

På det sättet som du vill ha det så kommer du bara få en row tillbaka från databasen detta eftersom vi kör group by på annons_id och har en where clause som säger annons_id.

 

Du kan ta ut summan av alla annons_ids impressions genom att skippa WHERE clausen.

 

Hrrmm, undrar om du förstog mig där? :) [/redigerat]

 

--

Some say I am crazy.. but the Voices in my head disagree...

 

[inlägget ändrat 2003-01-15 21:05:04 av Bj0rN]

Länk till kommentar
Dela på andra webbplatser

Varje rad är en "DAG" den uppdateras så länge det är samma.

 

Vad jag vill är att summera värdet clicks i alla rader så jag får en total antal clicks för då hela månaden.

 

Och detta får jag inte till, är helt lost på detta

 

Länk till kommentar
Dela på andra webbplatser

Då ska du, som Bj0rn sa, använda dig av SUM():

SELECT SUM(clicks) FROM tabell

 

Du kanske vill lägga in en WHERE-sats om du endast vill välja ut mellan två olika datum.

 

Länk till kommentar
Dela på andra webbplatser

Då hade jag använt SUM() funktionen i MySql. Läs på lite om hur MySql hanterar tid på denna adress: http://www.mysql.com/doc/en/Date_and_time_functions.html

 

På detta sätt kan du ändra din where clause till att vara från idag till en månad bak i tiden. Då kan du få ut alla annonsers clickrate i en SQL sträng vilket borde vara det ultimata IMHO.

 

För att du ska lära dig hur det fungerar så ger jag dig ingen färdigskriven SQL sträng denna gång, titta på den jag gav dig ovan och läs på om hur tidsfunktionerna fungerar så ska du nog få till det.

 

--

Some say I am crazy.. but the Voices in my head disagree...

 

Länk till kommentar
Dela på andra webbplatser

Har kollat på de länkar ni tipsade om och gjort följande.

 

$sql = mysql_query("SELECT SUM(impressions) FROM $table WHERE annons_id = $annons_id");

while ($rad = mysql_fetch_array($sql)) {

$impressions_2 = $rad["impressions"];

}

echo $impressions_2;

 

tror jag är på rätt väg men får det inte att fungera. Men än engång tack!

 

Länk till kommentar
Dela på andra webbplatser

Lägg till GROUP BY där så är du närmare lösningen på gåtan! :)

 

--

Some say I am crazy.. but the Voices in my head disagree...

 

Länk till kommentar
Dela på andra webbplatser

Här är min kod men jag får inte fram något:

 

$sql = mysql_query("SELECT SUM(impressions) FROM $table WHERE annons_id = $annons_id GROUP BY annons_id");

while ($rad = mysql_fetch_array($sql)) {

$imp = $rad["impressions"];

}

 

<? echo $imp ?>

 

Länk till kommentar
Dela på andra webbplatser

Det beror nog på att MySql returnerar SUM(impressions) som just SUM(impressions), om du lägger till AS SumImpressions i koden så fungerar det om du hämtar datat med $rad['SumImpressions']

 

$sql = mysql_query("SELECT SUM(impressions) AS SumImpressions FROM $table WHERE annons_id = $annons_id GROUP BY annons_id");
while ($rad = mysql_fetch_array($sql)) {
$imp = $rad["SumImpressions"];
}

 

[OT] Nej, nu ska jag nog gå o lägga mig så jag kommer upp till jobbet imorrn...[/OT]

 

--

Some say I am crazy.. but the Voices in my head disagree...

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...