php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.07.2006, 22:09  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard Count in versch. Spalten

Hallo,

ich habe eine Anmeldeliste, wo sich Familien mit ihren Kindern angemeldet haben. Pro Datensatz eine Anmeldung. Es gibt die Spalten K1, K2, K3, K4 für die Kinder. Hat die Familie drei Kinder angemeldet, stehen in dem Datensatz in den Spalten K1, K2, K3 jeweils eine 1 drin.

Meine Frage ist nun, wie bekomme ich es hin, dass ich alle Datensätze durchsuchen und zählen kann, wieviele Kinder angemeldet sind?

Hatte folgendes versucht:
Code:
SELECT Count(*) AS teenie FROM table WHERE k1 = '1' or k2 = '1' or k3 = '1' or k4 = '1'
Aber die Syntax stimmt wohl nicht.
Kann mir jemand bei der Logik helfen?
maeck ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.07.2006, 23:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo,
die Lösung mit K1..Kn ist etwas unflexibel und speicherraubend. Was wenn jemand > 4 Kinder oder garkeine hat? Dann hast du entweder nicht genug Platz und vergrämst damit die Eltern oder du hast 4 Spalten ohne sie zu brauchen.

Was steht denn in K1..K4 wenn keine 1 darin steht, 0 der NULL?

Wenn darin eine 0 steht mit:
Code:
SELECT SUM(k1 + k2 + k3 + k4) FROM test
Falls NULL:
Code:
SELECT SUM(COALESCE(k1,0) + COALESCE(k2,0) + COALESCE(k3,0) + COALESCE(k4,0)) FROM test
Zergling-new ist offline   Mit Zitat antworten
Alt 08.07.2006, 09:58  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Hallo Zergling, danke für deine Antwort.
Du hast Recht, das ist keine flexible Lösung, aber wie könnte man es besser lösen?
Ich brauche zu jedem Kind den Namen, das GebDatum und ob es bei dem extra Kinderprogramm teilnehmen möchte. Bisher waren es nie mehr als 4 Kinder, deswegen habe ich es auf 4 Kinder beschränkt.

Zu deiner Lösung: Ja es steht entweder 1 bei nem Kind drin, oder aber eine 0.
Leider funktioniert es nicht so richtig. Ich habe jetzt folgendes gemacht:
Code:
$sql_sumfam_teenie = mysql_query("SELECT SUM('teenieforum_kind1' + 'teenieforum_kind2' + 'teenieforum_kind3' + 'teenieforum_kind4') AS teenie FROM $table_family") or die (mysql_error());
$ausgabefam_sum_teenie = mysql_fetch_array($sql_sumfam_teenie);
Das gebe ich dann mit
Code:
<?php echo $ausgabefam_sum_teenie[teenie] ?>
aus.
Weiß nicht ob das so geschickt ist.

Auf jeden Fall bekomme ich als Ausgabe eine 0, wobei mit Sicherheit Kinder in db sind.
maeck ist offline   Mit Zitat antworten
Alt 08.07.2006, 11:41  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo, ich habe ja auch keine ' benutzt

Erstell einfach eine neue Tabelle:
Code:
parents
id | name

children
id | parent_id | name | birthday
Jetzt trägst du in children einfach Kinder ein. Die parent_id ist die ID der Eltern bzw. der Person die sich eben bei dir angemeldet hat und die die Kinder einträgt.

http://de.wikipedia.org/wiki/Normali...28Datenbank%29
Zergling-new ist offline   Mit Zitat antworten
Alt 08.07.2006, 12:08  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Ups stimmt Jetzt funktionierts.
Aber der PHP-Code ist ansonsten korrekt, oder kann man das auch einfacher (sinnvoller) machen?

Vielen Dank für den Tipp.
Leider besteht die Tabelle schon, auch mit mehreren eingetragenen Teilnehmern.
Aber für nächstes Jahr, werde ich die Tabellenstruktur nochmal umwerfen.

Gruß Marcel
maeck ist offline   Mit Zitat antworten
Alt 08.07.2006, 14:11  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wenn deine MySQL-Ergebnis Menge nur ein Ergebnis hat, kannst du
$anzahl = mysql_result($sql_sumfam_teenie,0);
verwenden.
Zergling-new ist offline   Mit Zitat antworten
Alt 08.07.2006, 15:30  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

Okay, VIELEN Dank für die Hilfe!
maeck ist offline   Mit Zitat antworten
Alt 28.07.2006, 00:36  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

leider habe ich nun ein erneutes problem:

wie kann ich mir die summe ausgeben lassen, von allen vornamen der kinder?
also es gibt die spalten vorname_kind1, vorname_kind2, vorname_kind3, vorname_kind4 und ich möchte gerne wissen, wieviele kinder es ingesamt gibt. in den feldern, wo kein name drin steht, steht "" drin.
maeck ist offline   Mit Zitat antworten
Alt 28.07.2006, 00:51  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von maeck
also es gibt die spalten vorname_kind1, vorname_kind2, vorname_kind3, vorname_kind4
Das klingt nach ganz bösem Datenbankdesign...
  Mit Zitat antworten
Alt 28.07.2006, 00:59  
Erfahrener Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 259
maeck befindet sich auf einem aufstrebenden Ast
Standard

da hast du Recht, aber das haben wir in den oberen Beiträgen schon festgestellt und es lässt sich momentan leider nicht ändern.

Weiß trotzdem jemand einen Rat?
maeck ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Count über mehrere Tabellenspalten plastic Datenbanken 3 20.10.2006 17:52
"Column count doesn't match value count at row 1" möchtegernchegga Datenbanken 3 05.03.2006 16:07
UPDATE count nach Link Aufruf ? PHP Tipps 2006 9 22.01.2006 14:53
Wie kann ich die Spalten einer Tabelle auslesen ? Datenbanken 0 31.10.2005 00:29
Probleme mit 'count' von mehreren Spalten Datenbanken 1 26.08.2005 12:09
drei Spalten einer Tabelle zusammenfügen Lia PHP Tipps 2005-2 24 16.08.2005 15:58
Doppelte Einträge in tabelle über mehrere Spalten anzeigen PHP Tipps 2005-2 8 22.07.2005 09:29
MySQL error: Column count doesn't match value count at row 1 atom-dragon PHP Tipps 2005-2 4 21.07.2005 01:38
spalten zählen mit ausnahmen Datenbanken 8 16.07.2005 13:04
Addieren von 3 Spalten, nach Ergebnis sortieren Datenbanken 11 15.06.2005 09:54
PEAR::DB LimitQuery was ist Count? PHP Tipps 2005-2 3 06.06.2005 18:02
Spalten Dynamisch als Tabelle anzeigen lassen(Spalten ausl.) Cyberbob_at_tot PHP Tipps 2005-2 6 04.06.2005 22:55
[Erledigt] GROUP BY und COUNT in Spalten Datenbanken 3 15.05.2005 08:13
mehrere COUNT() auf selbe Tabelle und »can't reopen table« tapferesschneiderlein Datenbanken 3 04.04.2005 13:51
[Erledigt] [OT] besser eine Tabelle mit mehr Spalten oder aufteilen ? Datenbanken 1 22.10.2004 17:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/datenbanken/41106-count-versch-spalten.html

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:28 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.