tschekowski
02-01-2006, 11:59
Hi,
Ich habe folgende Struktur:
==================================
| clientid | bannerid | etc | ...
--------------------------------------
| 10 | 20 | ......
| 10 | 21 | ......
| 10 | 22 | ......
| 15 | 12 | ......
==================================
ich will jetzt in einer Abfrage alle Bannerids ausgeben lassen bei denen die clientid z.B 10 ist. Für jede Bannerid soll dann nochmal eine seperate Abfrage folgen, am besten wäre es wenn man eine while schleife erstellt, bei der dann nacheinander alle werte ausgegeben werden - klingt ja recht simpel, ich steh aber im moment total auf der leitung...
jahlives
02-01-2006, 12:27
$sql = "Select (bannerid,etc) from my_table where clientid='10'";
$db = mysql_connect($host,$user,$pwd);
mysqldb_select('my_table',$db);
$res = mysql_query($sql,$db);
while($erg = mysql_fetch_assoc($res)){
echo $erg['bannerid']."\t\t\t".$erg['etc'].'<br />';
}
Gruss
tobi
p.s. Code nicht getestet...
tschekowski
02-01-2006, 22:48
ok den code hab ich - funzt vond er art her auf jeden fall...
Ich hab jetzt ein anderes Problem:
das ist eine (zugegeben) etwas komplizierte tabellenstruktuir in der gespeichert wird wie oft (views) welcher banner (Bannerid) in welchem Gebiet (zoneid) angezeigt wurde. der rest spielt erstmal keine rolle...
(ist die struktur von PHPADSNEW)
views | clicks | day | hour | bannerid | zoneid
===========================================
2 | 0 | 2006-01-02 | 16 | 26 | 10
3 | 0 | 2006-01-02 | 16 | 26 | 8
3 | 1 | 2006-01-02 | 16 | 25 | 10
2 | 0 | 2006-01-02 | 18 | 25 | 8
Ich habe 5 bannerids in einr liste und möchte herausfinden wie oft alle 5 banner zusammen heute (uhrzeit egal) angezeigt wurden und zwar sortiert nach der Zone
Meine bisherige Abfrage:
$result=mysql_query("SELECT SUM(views) AS summe FROM adserver_adstats WHERE bannerid=25 OR bannerid=26 AND TO_DAYS(NOW())-TO_DAYS(day)=0 GROUP BY zoneid");
Durch das OR bei den Bannerids summiert er manche werte doppelt (nur bei mehreren bannerids).....wo liegt der fehler bzw. wie kann ich die datenbankabfrage schreiben, dass es so klappt wie ich es will ?
Es werden keine Werte doppelt gezeigt, aber weil bei Dir sowohl bei zone 8 als auch bei zibe 10 jeweils 5 Klicks rauskommen, hast Du gedacht, es ist doppelt
Mach mal:
SELECT SUM(views), zoneid AS summe FROM adserver_adstats WHERE bannerid IN (25,26) AND TO_DAYS(NOW())-TO_DAYS(day)=0 GROUP BY zoneid
Dann siehst Du auch die zoneid.
Ausserdem ist die Abfrage mit OR schlecht (je mehr bannerids du hast, umso langsamer wird sie). Nimm
IN ()
tschekowski
03-01-2006, 19:35
daran hats wohl gelegen, mit IN funktioniert die abfrage...
Vielen Dank für deine Hilfe!!!
code brichst du generell nicht um, oder?