Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

mehrere Tabellen gleichzeitig auslesen gruppieren ...

Hallo Leute,

heute benötige ich euere Datenbankkentnisse, da ich gerade mal wieder den Wald vor lauter Bäumen nicht sehe :/

Folgende Gegebenheiten:

Ich habe drei (oder auch mehr, ist dynamisch) völlig identische Tabellen, in die wahlweise Daten geschrieben werden.

(Per Zufall gesteuert umd die Datensätze etwa gleichmäßig zu verteilen - denn es werden seeeehr viele erwartet und meine Berechnung haben ergeben, ich hab probiert :) das 355.000 Zeilen 260MB benötigen --- und um die 4GB Grenze nicht so schnell zu erreichen bzw. flexibel zu sein, verwende ich einfach mehrere Tabellen.)

Nun jedenfalls muss ich nun aus den identischen Tabellen mit unterschiedlichen Datensätzen einen Gewinner ermitteln. ;)

Nun habe ich ein bisschen herumprobiert, aber bekomme immer nur 0 Zeilen ausgegeben.

Evtl. kann mir hier mal jemand einen Denkanstoß geben.

nachfolgend mein Select um die drei Gesamtanzahlen zu erhalten (die ich jeweils separat benötige um sie einer Tabelle zuzuordnen)

Code:                   In Zwischenablage kopieren (nur IE)
1">

Vielen Dank für euere Mühe :)
Hier gehts zum Orginal Eintrag "mehrere Tabellen gleichzeitig auslesen gruppieren ..." im Forum

Antworten

Warum GROUP BY?? Du zählst doch nur die Einträge.... Um die Bedingungen solltest du unbedingt Klammern setzen, damit MySQL weiß, was für dich zusammengehört, also so:
Code:                   In Zwischenablage kopieren (nur IE)
2">




2.

Ich habe die GROUP BY Klausel gesetzt, da es vorkommen kann das eine User ID mehrmals in allen Tabellen vorkommen kann, aber nur einmal gezählt werden darf.

allerdings bin cih von dem AS summe sehr beeindruckt :) auch wenn ich drei Werte benötige um die Anzahl der drei Tabellen zu erhalten.


3.

also soweit funktionert es ja, bis auf die fehlende Gruppierung, d.h. die doppelt vorhandenen User IDs werden auch doppelt gezählt

Code:                   In Zwischenablage kopieren (nur IE)
3">




4.

Ach so, es gibt mehrere Einträge zu jeder ID. Musst du auch sagen ;)

Code:                   In Zwischenablage kopieren (nur IE)
4">

Und die Aliase bei COUNT() nicht vergessen, sonst kannst du nicht richtig auf das Ergebnis zurückgreifen...


5.

Zitat:
Gary postete
Ach so, es gibt mehrere Einträge zu jeder ID. Musst du auch sagen ;)

hab ich doch in der 001 *bedröppelt guggt* :|

geändert, ich meint natürlich die 002


6.

hmmm ... DISTINCT liefert mir nun also keine doppelten user_id´s, DISTINCT merkt sich ja was *grübel* aber bedeutet das dann auch gleich das er eine user_id jeweils nur einmal zählt, wenn diese Beispielsweise 5 x in der ersten Tabelle, 10x in der dritten und 6x in der siebten vorhanden ist ?!? Wären ja insgesamt 11 treffer, wovon nur einer gezählt werden darf. Verstehst schon gell, Mehrfachteilnahme darf nicht die Chance erhöhren.


7.

Evtl. solltest du über eine temporäre Tabelle nachdenken, in die du erstmal alle relevanten Datensätze reinkopierst und anschließend deine Abfragen darüber laufen lässt. Macht das Leben evtl. etwas leichter....

Zitat:
hab ich doch in der 001 *bedröppelt guggt*

Ich hatte nur 003 gelesen... Mea culpa :)


8.

na ich werde wohl aus Zeitgründen eine dreggische PHP Lösung benützen müssen :/

ich ziehe mir aus allen Tabellen die betreffenden User IDs heraus in ein Array, lösche die doppelt vorhandenen und lasse darüber meinen Randomizer rennen.

Aber trotzdem vielen Dank für deine Hilfe ;)


----



es werden halt wahrscheinlich sehr viele Datensätze, hoffentlich muss ich dabei nicht irgendwann mal an der MaxLifeTime in php herumschrauben, ansonsten ist es eher irrelevant, da der script eh nur nachts durch einen cron aufgerufen wird.


Hier gehts zum Orginal Eintrag "mehrere Tabellen gleichzeitig auslesen gruppieren ..." im Forum
 
phpforum.de | Impressum | Handy Bundles