SetaPDF
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 08.03.2002, 12:57   #1
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE

[SQL] Count in einem Query für mehrere Tabellen


Hi !

Also ich häng jetzt schon ne' ganze Weile an einem Problem. Folgendes: Ich habe 3 Tabellen: Teilnehmer, Begleitpersonen und Kinder. Begleitpersonen und Kinder sind jeweils über die ID des Teilnehmers an den Teilnehmer gebunden. In der Teilnehmertabelle steht ein Datum, das Anmeldedatum. Gilt also auch für die Begleitpersonen oder die Kinder.

So, und nun möchte ich mit einem Query abfragen wie viele Personen insgesamt angemeldet sind und wieviele Personen HEUTE angemeldet sind.

Meine bisherige Lösung sieht so aus:
Code:
SELECT COUNT(*), SUM(banzahl), SUM(kanzahl) FROM teilnehmer  WHERE DATE_FORMAT(time, '%Y-%m-%d') = CURDATE()
Die Results zähle ich dann in PHP zusammen...

Das funktioniert aber auch nur, da jedem Teilnehmer auch die Anzahl der weiteren Personen in den Feldern banzahl und kanzahl zugeordnet ist. Jetzt kommen aber noch Teilstornierungen dazu, wo die Summe der Begleitpersonen oder Kinder vom Grund her gleich bleibt, sie aber als storniert markiert werden sollen und nicht mehr mitgezählt werden sollen.

Hoffe das war verständlich... und vielleicht hat ja jemand ne' Idee?!

Gruß Jan
Stuck Mojo ist offline   Mit Zitat antworten


Alt 08.03.2002, 15:35   #2
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
falls es nur ums zählen gehen soll:

mal schauen ob ich alles richtig verstanden hab:
teilnehmer: personen
begleitperson: personen, die die teilnehmer begleiten
kinder: kinder der teilnehmer.

richtig?
in jede tabelle sollte dann wahrscheinlich ein stornoflag, oder?

query 1: select count* from teilnehmer where datum = heute and storno = false

bringt dir die anzahl der teilnehmer heute

query 2 und 3 ebenfalls wie 1 nur eben auf kinder und begleitperson.

dann zählst halt alles zam.

das is mal der billige ansatz ohne deine banzahl und kanzahl felder pflegen zu müssen.


...oder so ähnlich halt...

lf

p.s. select count(*) from frauen gefällt mir um häuser besser als select count(*) from kinder....
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 08.03.2002, 23:33   #3
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
...genau SO möchte ich es nicht machen...
Ich will die Abfrage in einem Query haben.
Deine Version funktioniert auch nur bei der Abfrage der Gesamtteilnehmerzahl. Aber nicht wenn ich alle Personen haben möchte, die HEUTE angemeldet wurden. In den Feldern Begleitperson und Kinder sind keine Datumsfelder eingetragen. Diese müssten dann mit der Teilnehmertabelle verknüpft werden. Aber halt in einem Query... ...is schon verrückt... aber möcht ich gern haben...

Ich erklär vielleicht mal worauf ich hinaus will:
Ich möchte gerne mit einer Funktion bestimmte counts von Tabelle machen, um so für ein Templatesystem ganz einfach Zahlenwerte zur Verfügung zu stellen... so siehts bisher aus:
PHP-Code:
<?
function graballcounts($extraquery="") {
    
$query mysql_query("SELECT COUNT(*), SUM(banzahl), SUM(kanzahl) FROM teilnehmer".$extraquery);
    
$tmp mysql_fetch_row($query);
    
$tmp2 $tmp[0]+$tmp[1]+$tmp[2];
 return 
$tmp2;
}
?>
Diese Funktion will ich dann z.B. so aufrufen können:
PHP-Code:
<?
$tgesamt 
graballcounts($extraquery="");
$tgesamttoday graballcounts(" WHERE DATE_FORMAT(time, '%Y-%m-%d') = CURDATE()");
?>
...also, bitte um weitere Tips!

Gruß Jan

PS: wenn es dir einfacher fällt mir zu Helfen kannst du ruhig Frauen anstatt Kinder nehmen... Oder sonstwas... mir ist nur der Syntax und die Logik wichtig
Stuck Mojo ist offline   Mit Zitat antworten
Alt 11.03.2002, 10:21   #4
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
well...

in deiner funktion checkst du ab, ob ein übergabewert reingegeben wurde.
wenn ja dann:
.$extraquery = " AND ".$extraquery;

erster wert: select count(teilnehmerid) from teilnehmer
where storno=false .$extraquery;

zweiter wert: select count(begleiterid) from teilnehmer,begleiter
where teilnehmer.teilnehmerid=begleiter.teilnehmerforeignkey and storno=false .$extraquery;

zweiter wert: select count(kindid) from teilnehmer,kinder
where teilnehmer.teilnehmerid=kinder.teilnehmerforeignkey and storno=false .$extraquery;

dann
return erster + zweiter + dritter wert.

in deiner funktion übergibst du
$tgesamttoday = graballcounts("DATE_FORMAT(time, '%Y-%m-%d') = CURDATE()");

somit bleibst du relativ flexibel in bezug auf datumsabfragen.
vorausgesetzt dein time ist unique <- sollte es aber, da in kinder und begleiter kein datum gesetzt wurde.

das ding gehört natürlich noch verfeinert, wie z.b. kann ein teilnehmer stornieren? wenn ja, sind dann automatisch alle begleitpersonen und kinder storniert? usw.

willst du das wirklich in einer query machen, dann kann ich mir da nur noch eine union vorstellen, aber das kann mysql glaub ich nicht.

ich sehe also keinen weg, der an mehreren querys vorbei geht.


lf
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
[SQL] Count in einem Query für mehrere Tabellen [SQL] Count in einem Query für mehrere Tabellen
« Kann mir jemand diese Shcleife erklären ? | Web-Bookmarkverwaltung »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67