Zum Inhalt springen

Datenbankabfrage / Ausgabe


Empfohlene Beiträge

Ich möchte eine Datenbankabfrage machen die mir folgendes Ergebnis liefert:

ausgabe.jpg

Die Ausgabe soll alle Veranstaltungen der letzten 5 Monate in der Tabelle liefern.

Das heißt, wenn in der Tabelle Daten zu Veranstaltungen im Dezember 04, November 04, Oktober 04, September 04, August 04, Juli 04, Juni 04 hinterlegt sind, sollen die aktuellen 5 ausgegeben werden.

In diesem Fall steht ganz oben auf der Seite Dezember 04 und unten August 04. Die anderen 2 sollen nicht mehr berücksichtig werden.

Wenn nun Veranstaltunge von Janura 05 hinzukommen würden soll das ganze dynamisch sich ändern und August verschwinden...

Allerdings hab ich keine Ahnung wie ich die Ausgabe so hin bekomme das er das ganze so gruppiert, bzw. wie ich meine Datenbank-Tabelle aufbauen muss.

Die einzigsten Felder die die Tabelle enthalten muss sind: Datum, Veranstaltung und Veranstalter

Wie muss ich meine Tabelle aufabuen? muss ich irgendwas bei den Index achten?

Wie sieht mein SQL Statement aus?

Und wie baue ich das ganze in PHP ein? benötige ich eine Schleife und If-Anweisung?

Am besten wäre wenn mir jemand einen Beispielquellcode für eine solche ausgabe zur Verfügung stellen könnte!

Ich hoffe ihr versteht was ich meine!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Allerdings hab ich keine Ahnung wie ich die Ausgabe so hin bekomme das er das ganze so gruppiert, bzw. wie ich meine Datenbank-Tabelle aufbauen muss.

Die einzigsten Felder die die Tabelle enthalten muss sind: Datum, Veranstaltung und Veranstalter

Da ist nichts zu gruppieren da du nur eine Tabelle hast, wie du selber durch Blick auf dein eingebundenes Bild sehen kannst.

Wie muss ich meine Tabelle aufabuen? muss ich irgendwas bei den Index achten?

Wie sieht mein SQL Statement aus?

Straightforward.

SELECT * FROM ... ORDER BY Veranstaltunsdatum DESC LIMIT 5

Und wie baue ich das ganze in PHP ein? benötige ich eine Schleife und If-Anweisung?

1. Ja

2. Nein

Am besten wäre wenn mir jemand einen Beispielquellcode für eine solche ausgabe zur Verfügung stellen könnte!

Ich hoffe ihr versteht was ich meine!!!

Der letzte Satz war Selbstironisch, hoffe ich.

Empfehlung: http://kris.koehntopp.de/artikel/data-driven/

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit gruppieren meinte die unterteilung nach Monaten.

Wie ich die ganze Tabelle am Stück ausgeben könnte weiß ich auch!

Aber was muss ich in meine Statement bzw. in PHP einbauen damit er alle Datensätze ausgibt, mit dem Veranstaltungsmonat Juli, dann alle mit August, usw...

und das ganze so das er nur die 5 aktuellsten Monate ausgibt, man nichts fest eintragen muss (also z.B. if $monat="juli 2004") weil das würde ja heißen das ich soblad ich einen neuen Monat in die Datenbank aufnemhe ich die Anweisung im Code ädnern müsste.

Das "Limit" im SQL darf sich also nicht auf die Datensätze sonder auf die Monate beziehen!

Wie kann ich es realisieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

oder versteht ihr nicht was ich brauche?

Doch, aber leider fehlen da noch ein paar Informationen um Dir zu helfen, wie z.B. welche Datenbank Du einsetzt (MySql, MS-SQL, etc.pp) und in welcher Version. Dein Problem ist nämlich z.B. bei einer neueren MySQL-DB leichter zu lösen, da diese Subqueries unterstützt, während ältere da die Flügel strecken.

Generelle Vorgehensweise:

Suche Dir das Grösste Datum aus der Tabelle (SELECT max(Datum)) heraus und Selecte dann mit dem gefundenen Datum -5 Monate.

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal die Statements in plain SQL in Benutzung mit PHP. Da ich nicht weiss, in welchem Format du das Datum bzw. den Monat vorliegen hast, gehe ich einfach mal von einem kompletten Datum aus.

//Den neusten Eintrag rausfischen
$result = mysql_query("SELECT datum FROM tabelle ORDER BY datum DESC LIMIT 1");

//Hier kommen die Scriptzeilen, die das Datum des Tages ausrechen
//der als letztes angezeigt werden soll -> Ergebnis in $datum

//Alle Einträge die neuer als $datum sind sortiert raussuchen
$result = mysql_query("SELECT * FROM tabelle WHERE datum >= '$datum' ORDER BY datum DESC");[/PHP]

Sollte dir das nicht reichen, brauchen wir mehr Input. Meine Glaskugel ist leider heute Morgen kaputt gegangen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

SELECT * FROM Tabelle WHERE Datum >= DATE_SUB(NOW(), INTERVAL 5 MONTH) ORDER BY Datum DESC;

Das war auch meine Überlegung, aber ich habe Flitz so verstanden, dass er/sie die Sätze der "aktuellsten" 5 Monate haben will.

@Flitz:

Grobe Syntax, ungetestet:


$result = mysql_query ("SELECT month(max(datum)),year(max(datum)) from tabelle");
list ($monat,$jahr) = mysql_fetch_row($result);
$tmpdatum = mktime(0,0,0,$monat,1,$jahr);
$neudatum = strtotime("-5 month", $tmpdatum)
$result = mysql_query("SELECT * from tabelle where datum >= ".date("%Y-%m-%d",$neudatum)." order by datum ASC");
/* Schleife zum Lesen / Gruppieren und Ausgeben */
[/PHP]

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

ja ich probier die Vorschläge hier mal aus...

@all

Ich möchte alle Datensätze angezeigt werden, vom aktuellsten Datum (Monat) das in der DB abgespeichert ist bis 5 Monate vorher (z.B. von Dezember 2004 (steht ganz oben auf der Seite) bis August 2004 (steht ganz unten auf der Seite)).

- es gibt mehrere Datensätze mit dem gleichen Monat (da diese Abfrage für Veranstaltungen ist)

- es gibt auf jeden Fall eine Spalte "datum" in der Tabelle da jede Veranstaltung ein Datum benötigt.

- Die Ausgabe könnte man doch mit einem Primärschlüssel ausgeben der aus einer ID (=Monat) und dem Veranstaltungsdatum besteht.

jetzt verständlicher?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...