bestimmte datensätze auslesen

Zero2000

Erfahrenes Mitglied
Hallo

Ich weiß nicht so recht wie ich mein Problem beschreiben soll.
Ich habe eine MySQL Tabelle Postausgang in der werden drei Werte gespeichert: Standard, Kompakt und Maxi.
Die drei sind in einer tabelle die heist brief.

Wie bekomme ich nun die Anzahl von Standard oder Maxi raus
Ist es besser wenn ich 3 extra tabellen mache
So ganz fit bin ich in PHP nicht. Ich denke das man das eventuell mit einer Abfrage lösen kann

Danke für eure Hilfe Maik
 
Ich meinte eigentlich was es so fuer Felder gibt, damit man sich mal 'nen Ueberblick machen kann.
Sind Standard, Kompakt und Maxi Werte eines Feldes? Z.B. mit dem Namen Typ oder sowas?
 
Beschreib doch mal genau die struktur.
Heisst das für maxi usw je ein feld, oder ein Feld in dem du maxi oder standard oder kompakts speicherst? (hierfür würde sich als Feldtyp enum anbieten).
Dann könntest du ein "select sum(feld) from tabelle group by feld" machen
 
Tabelle:
--------------------------------------------------
postausgang
--------------------------------------------------
id = int(11) auto_increment
datum=varchar(11)
firma=varchar(30)
beleg=varchar(15)
euro=double(5,2)
brief=varchar(10)
-----------------------------------------------
id ist ja klar. bei datum kommt das datum rein ich habe hier varchar gewählt, weil das mysql datum ein blödes format hat.
firma ist auch klar denke ich und bei beleg kommt eine alphanumerische belegnummer rein.
bei euro wird ein briefmarkenwert eingetragen per dropdownmenü in diesem Stil: 0.55 ode 1.10
Bei brief kommt das Briefformat rein: Standard, Maxi oder Kompakt.

Ich möchte gern eine Statistik führen in der ich mir anzeigen lassen kann wieviele briefe in welchen größen mit welchem gesamtwert ich verschickt habe... Vielleicht kommt später mal noch hinzu in welchem zeitraum oder ein spezieller monat.

ICh hoffe alles ist nun klar.
MfG Maik
 
Wenn du statistik über Zeiträume machen willst ist DATE_TIME wesentlich geeigneter für sowas, da du dann im Statement gleich auf die mySQL Datumsfunktionen bauen kannst.
Das "blöde Format" kannst du beim auslesen beliebit mit DATE_FORMAT() im Statement umformatieren.

Ansonsten probiere mal mit sum(brief) und einem group by brief beim Select (siehe mein post oben).
Alternativ könnte man hier aber auch wie erwähnt enum nehmen, wenn eh nur drei verschiedene Werte vorkommen können.
 
Wie sollte ich denn Deiner Meinung nach meine Tabelle aufbauen? Welche Typen sollte ich für die einzelnen Felder verwenden?

MfG Maik
 
Hi,

select count(*) from postausgang where brief='maxi' gibt die die Anzahl aller briefe zurück die maxi heißen

Das Datumsformat bei mysql ist wirklich ein bisschen bescheuert wenn Du deutsche anwendungen hast. Ich habe mir einen einfachen Parser geschrieben, der das Datum richtig in die Tabelle schreibt (aufsplitten nach "." und rückwärts wieder zusammensetzen mit "-"). Für das Auslesen kannst Du die mysql-Syntay verwenden:
Select DATE_FORMAT(%d.%m.%Y) from postausgang

Wird wahrscheinlich auch möglich sein, daß Du das Einlesen mit eine Funktion von MySql machen kannst, kenn mich dabei aber nicht so aus. Sollte jemand eine Idee dazu haben, ich lausche diesem Thread gerne weiter mit der Hoffnung mich fortbilden zu können :-)

Ach ja, ich würde generell noch 2 Felder in alle Tabellen mit aufnehmen
status (char 1) standartmäßig mit "N" gefüllt
dTimestamp (Timestamp) wird automatisch gefüllt

Status füge ich bei jeder Tabelle ein und mache alle "Select"-Abfragen mit beschränkung auf Status="N". Wenn Du mal irgendwelche Datensätze ausblenden willst hast Du es so einfacher.

dTimestamp: Wir hatten schon Probleme mit Tabellen ohne Timestamp in andere DB-Umgebungen zu portieren. Woran das lag kann ich nicht sagen, aber seitdem wir nen Timestamp einfügen klappts. Der Timestamp könnte optional auch als Datum herhalten, würde ich aber nicht empfehlen.

Gruss,

Bugs
 
@bugsBastard, dann bräuchte er aber drei Statements um das zu prüfen.
Habs gerade nochmal probiert ein SELECT biref, count(brief) FROM `tabelle` GROUP BY `brief`
Sollte drei Zeilen liefern, den Wert von brief und dazugehörige Anzahl.

Das mit dem timestamp verstehe ich nicht. Ich hab noch nie in eine Tabelle einen timestamp eingefügt wenn ich ihn nicht brauchte... gab uch keine Probleme.

Bei DATE_FORMAT musst du als ersten Parameter noch das Feld, welches er formatieren soll angeben. Dann würde ich es mit AS noch umbenennen sonst hat so ein einen hässlichen name. Also so SELECT DATE_FORMAT(`datumsfeld`, '%d.%m.%Y') AS `datumsfeld` FROM ...

@02000: Hatte ich doc hin den vorhergehenden Posts schon beschrieben?!
 
Zurück