spalten mit bedingungen auslesen
udo
- datenbank
0 Cheatah0 udo0 Frank (no reg)0 udo
0 Cheatah
Auch nach langem suchen habe ich noch immer keinen Lösungsansatz gefunden.
Ich habe eine sql-Tabelle in php die folgendermaßen aufgeteilt ist:
Spalte1 - Spalte2 - Spalte3 - Spalte4 - usw.
Datum - Anzahl - Teilnehmer1 - Teilnehmer2 - Teilnehmer3 - usw.
01.01.08 - 2 - Ja - Ja - Nein -
07.03.08 - 1 - Nein - Ja - Nein -
usw.
Die Spalte 2 "Anzahl" gibt es noch nicht.
Aber ich möchte gerne auf diese Art die Anzahl der Teilnehmer ermitteln die ein "Ja" in der MySql Datenbank Tabelle eingetragen haben und diese in der Spalte2 anzeigen.
Ich kann immer nur über den Count() die Anzahl der Einträge in einer Spalte ausgeben.
Ich hoffe ich konnte einigermaßen verständlich erklären was ich gerne für ein Ergebnis hätte. Ich wäre sehr dankbar, wenn ich hier Unterstützung bekommen könnte.
Hi,
Ich habe eine sql-Tabelle in php
was ist eine "SQL-Tabelle in PHP"?
Spalte1 - Spalte2 - Spalte3 - Spalte4 - usw.
Datum - Anzahl - Teilnehmer1 - Teilnehmer2 - Teilnehmer3 - usw.
Das riecht sehr, sehr streng nach einer Kreuztabelle. Warum hast Du einzelne Spalten angelegt?
Die Spalte 2 "Anzahl" gibt es noch nicht.
Sie scheint sich ja auch eindeutig aus den anderen Inhalten zu ergeben. Demnach ist sie nicht nötig.
Aber ich möchte gerne auf diese Art die Anzahl der Teilnehmer ermitteln die ein "Ja" in der MySql Datenbank Tabelle eingetragen haben und diese in der Spalte2 anzeigen.
Warum hast Du Dich dazu entschieden, ausgerechnet "Ja" in die Spalten zu schreiben?
Cheatah
Hallo Cheatah
leider bin ich jetzt noch keinen Schritt weiter !
was ist eine "SQL-Tabelle in PHP"?
Auch leider, bin ich Anfänger auf dem Gebiet, sonst hätte ich ja auch nicht um Hilfe gebeten. Natürlich meine ich eine Tabelle in einer MySql Datenbank die ich per php, auslese und wieder als Tabelle ausgebe.
Die Spalte Anzahl ergibt sich wenn man nur 3 Teilnehmer hat. In diesem Fall werden es aber deutlich mehr werden. So das ich gerne eine Spalte eingerichtet hätte wo man auf einen Blick eine Anzahl der Teilnehmer erkennen kann. Des weiteren möchte ich diese Anzahl im nächsten Schritt auch noch in php weiter verarbeiten. So das ich eine Entscheidung treffen kann, wie viele Teilnehmer fehlen mir noch oder habe ich evt. schon zu viele.
Warum hast Du Dich dazu entschieden, ausgerechnet "Ja" in die Spalten zu schreiben?
Hierfür habe ich mich entschieden um einfach nur den anderen Teilnehmern zu visualisieren : Nimmt Teilnehmer 1 teil Ja oder Nein.
Aber es müßte mit meinen wenigen Kenntnissen doch völlig egal sein ob ich für die Anzahl der Teilnehmer ein Ja "filtere" oder eine Zahl oder ein "true", ein "false" oder oder ...
Die ursprüngliche Frage ging eigentlich in die Richtung. Wie kann ich in der Spalte "Anzahl" auf einen Blick darstellen welche Anzahl an Teilnehmern habe ich eigentlich.
Danke noch mal im voraus
Hi,
nicht jeder kann "unseren" Cheatah verstehen. ;) Und er muss auch nicht immer richtig liegen.
Aber es müßte mit meinen wenigen Kenntnissen doch völlig egal sein ob ich für die Anzahl der Teilnehmer ein Ja "filtere" oder eine Zahl oder ein "true", ein "false" oder oder ...
'Ja' braucht 2 byte, 'Nein' braucht ... äh ... 4 byte? 'true' in der Form bit oder boolean, braucht nur ... äh ... 1 byte. Soviel erstmal dazu. 'Ja' ist ausserdem Deutsch, und damit uncool.
Wenn du für einen Termin jetzt max. 15 Teilnehmer haben kannst, dann machst du 15 Spalten? Teilnehmer1 .... Teilnehmer7 .... Teilnehmer15? Und was, wenn du vielleicht dann doch mal 19 brauchst? Du siehst, dein Design ist absolut ungeeignet.
Also,
du normalisierst aus, 1 Tabelle Termin (da drin steht z.b. das Datum des Termins), 1 Tabelle Teilnehmer (da drin hätts dann z.b. den Teilnehmernamen - übrigens völlig unabhängig von Terminen und anderen Teilnehmern) und weiters hast du eine Tabelle 'Teilnahme' mit eigentlich 2 Spalten: TerminId (verweist auf die Tabelle Termine) und TeilnehmerId (verweist - na auf welche Tabelle??)
wenn du jetzt irgendwas mit Zählungen machen willst, dann tust du das mittels Tabelle 'Teilnahme', COUNT() und GROUP BY. Die Seiten im Online-Handbuch von MySql zu diesen beiden Dingen findest du selbst. Du brauchst die Anzahl also nicht physikalisch speichern.
dann überlegst du dir, ob du in PHP wirklich pivotieren (Stichwort Kreuztabelle) willst, wenn ja, dann tust du es in PHP, wenn nicht, dann gibst du die Records eben vertikal in einer Tabelle aus, so wie sie aus der DB rauskommen
Gruss, Frank
Vielen Dank Frank,
so ist es wirklich schon deutlich besser erklärt, hat mir leider nicht so geholfen, wenn es nur von "oben" weg kritisiert wird was man da gemacht hat. Deine Erklärung habe ich verstanden und das hilft mir auch schon mal weiter.
Also vielen Dank noch mal...ich werde mich da mal dran setzen und ein bisschen Ordnung machen.
Danke für die Unterstützung.
Hi,
leider bin ich jetzt noch keinen Schritt weiter !
das ist meistens ein Hinweis darauf, dass Du die Antwort noch mal sorgfältig lesen solltest.
Auch leider, bin ich Anfänger auf dem Gebiet, sonst hätte ich ja auch nicht um Hilfe gebeten.
Hm, ich bin auf einigen Gebieten ein Fachmann und habe zu ihnen trotzdem in diesem Forum schon um Hilfe gebeten.
Die Spalte Anzahl ergibt sich wenn man nur 3 Teilnehmer hat.
Damit ist diese Spalte überflüssig.
In diesem Fall werden es aber deutlich mehr werden.
Und das bedeutet für Dich, dass zunächst einmal weitere Spalten für die Teilnehmer existieren müssen? Veto. Das ist ein zum Scheitern verurteiltes DB-Layout. Beschäftige Dich mit Normalisierung in Datenbanken.
Anschließend existiert Dein Problem übrigens nicht mehr - was bei Grundlagenfehlern oft der Fall ist.
Warum hast Du Dich dazu entschieden, ausgerechnet "Ja" in die Spalten zu schreiben?
Hierfür habe ich mich entschieden um einfach nur den anderen Teilnehmern zu visualisieren :
Die Visualisierung ist Aufgabe der auswertenden Logik. Was in der Datenbank gespeichert wird, hat damit wenig zu tun. Oder was hattest Du vor zu tun, wenn in einer Darstellung "nimmt teil" und "fehlt" stehen soll?
Aber es müßte mit meinen wenigen Kenntnissen doch völlig egal sein ob ich für die Anzahl der Teilnehmer ein Ja "filtere" oder eine Zahl oder ein "true", ein "false" oder oder ...
Nein. Eine geeignete Speicherung begünstigt viele Use-Cases, eine ungeeignete erschwert oder verhindert sie.
Die ursprüngliche Frage ging eigentlich in die Richtung. Wie kann ich in der Spalte "Anzahl" auf einen Blick darstellen welche Anzahl an Teilnehmern habe ich eigentlich.
Korrigiere Dein DB-Layout.
Cheatah