PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem ... Quadratisch ?



Surviver
22.01.2007, 20:32
Hallo, ich habe folgendes Query:

PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------

Das Funktioniert sowei auch, bis auf das nominationcount immer die Quadratzahl des wirklichen Wertes ist. Weiss jemand, woran das liegen könnte ?

Danke schonmal :)


Gruß Julian

MikeD
22.01.2007, 21:43
Da ich von solchen PHP Sachen leider noch keine Ahnung habe, hab ich vielleicht das, was Du suichst. Schau mal unter JOINS - das leidige Thema (http://www.php-resource.de/forum/printthread.php?threadid=28292) rein. Vielleicht ist da was für Dich dabei. Wenn nicht, frag doch mal Andreas, Merlin oder MarioK :smiley: Das sind doch Profis und machen sowas in Handumdrehen.

Andreas
22.01.2007, 23:02
Was zum Geier soll diese Abfrage liefern?

Bitte Schema, (Teil)-Dump und gewünschten Output posten.

Aber mal allgemein:

Nehmen wir an deine Tabelle nominations hat die Felder vorname, name und Domain.
Aktuell gibt es 5 Datensätze:
Klaus,Mustermann,foobar.de
Hans,Mustermann,foo.de
Jürgen,Mustermann,bar.de
Anton,Mustermann,foobar.de
Heinz,Musternabb,foobar.de

Was macht nun deine Abfrage?
Zunächst einmal verkünpft sie diese Tabelle mit sich selbst unter einem anderen Namen über die Spalte domain.

Die dabei temporär entstehende Tabelle ist also
nominations.vorname, nominations.name, nominations.domain, join.vorname, join.name

Klaus,Mustermann,foobar.de,Klaus,Mustermann
Klaus,Mustermann,foobar.de,Anton,Mustermann
Klaus,Mustermann,foobar.de,Heinz,Mustermann
Hans,Mustermann,foo.de,Hans,Mustermann
Jürgen,Mustermann,bar.de,Jürgen,Mustermann
Anton,Mustermann,foobar.de,Klaus,Mustermann
Anton,Mustermann,foobar.de,Anton,Mustermann
Anton,Mustermann,foobar.de,Heinz,Mustermann
Heinz,Musternann,foobar.de,Klaus,Mustermann
Heinz,Musternann,foobar.de,Anton,Mustermann
Heinz,Musternann,foobar.de,Heinz,Mustermann

Durch das GROUP BY bewirkst Du dass für jede Domain nur ein Eintrag ausgegeben wird, durch das COUNT() die Anzahl der Einträge.
Das ergbit dann für foobar.de 9, für foo.de und bar.de jeweils 1

Surviver
23.01.2007, 07:04
Danke erstmal Merlin ;)

Du hast es in eta richtig, dsa Ziel dieser Abfrage ist es, jeden Eintrag nur 1mal auzulesen und dann danach geordnet, wie oft er in der Tabelle existiert.

Ich habe eben die Felder domain und beschreibung in dieser Tabelle, zB mit

lala.net|...
lala.net|...
lala.net|...
cooleseite.de|...
mmh.de|...
mmh.de|...

Später mlchte ich folgende AUsgabe erreichen:

lala.net (3)
mmh.de(2)
cooleseite.de(1)


Danke schonmal :)

Gruß Julian

Andreas
23.01.2007, 12:14
SELECT domain, COUNT(domain) AS domaincount FROM nominations GROUP BY domain ORDER by nominationcount DESC

domain sollte einen Index haben um die Abfrage halbwegs performant zu halten.

Surviver
23.01.2007, 16:04
SELECT domain, COUNT(domain) AS domaincount FROM nominations GROUP BY domain ORDER by nominationcount DESC

domain sollte einen Index haben um die Abfrage halbwegs performant zu halten.

Danke :gott