

Anmelde-Formular

MEgHaShAvAr 19. November 2004, 12:23
Hallo!
Ich bin auf der Fehlersuch nach einem eigentlich ganz einafchen Problem (so dachte ich zumindest).
ALso ich habe 2 tabellen
1. Tabelle: artikel
ArtID ; ArtName
----------------
1 ; Monitor
2 ; Drucker
3 ; Tastatur
2. Tabelle: adclick
id ; artikel ; timest ; ip
---------------------------
1 ; 1 ; 1234560 ; 123.123.123.123
2 ; 2 ; 1234561 ; 123.123.123.123
3 ; 1 ; 1234562 ; 123.123.123.123
4 ; 1 ; 1234563 ; 123.123.123.123
5 ; 2 ; 1234564 ; 123.123.123.123
nun mächte ich gerne wissen wieviele visits die jeweiligen artikel haben. dazu verwende ich folgenden SQL Befehl:
SELECT a.ArtID, a.ArtName, count(b.id) as klicks
FROM artikel as a
join adclick as b on a.ArtID=b.artikel
group by a.ArtID
order by klicks, a.ArtName DESC
Damit werden auch die artikel mit den entsprechenden Klicks angezeigt, aber leider nur die Artikel mit Visits die Ohne Visits werden nicht angezeigt. Bekomme ich Artikel bei denen "klicks"=0 ist irgendwie mit in die abfrage hinein?
das ergebnis sollte also nach möglichkeit so aussehen:
ArtID ; ArtName ; klicks
------------------------
1 ; Monitor ; 3
2 ; Drucker ; 2
3 ; Tastatur ; 0
MfG
Meghashavar
e-five 19. November 2004, 13:12
müsst emit nem left join gehen:
SELECT a.ArtID, a.ArtName, count(b.id) as klicks
FROM artikel as a
LEFT JOIN adclick as b on a.ArtID=b.artikel
GROUP BY a.ArtID
ORDER BY klicks, a.ArtName DESC
MEgHaShAvAr 19. November 2004, 13:35
Moin!
Ja super, damit funktioniert es DANKE, dauert aber suuuuper lange (188.09 sec) ist das normal bzw kann man das beschleinigen?
Die Tabelle mit artikeln beinhaltet zur zeit ca 600 artikel und adclick gut 100.000 einträge. ich denke daran liegt das Gschwindigkeitsproblem. Abr müsste man doch auch beschleunigen können oder geht das nur indem ich die einträge "beschränke" z.B. mit der Auswahl timestamp von xx bis yy?
MfG
Meghashavar