SQL Abfrage

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von gamerheino, 9. Juni 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 9. Juni 2008
    Hey Leute

    Ich beschäftige mich mit Staroffice Base 8 ( Datenbanken / SQL ) ... das Wichtigste beherrsch ich so langsam ...
    Nun haben wir eine Aufgabe bekommen, in der wir innerhalb der Gruppe nicht weiter kommen
    ( Selbst der Lehrer kommt zu keiner Lösung )

    Nun wollt ich mal die Pro's fragen, ob jemand die richtige Abfrage kennt ??
    Ist bestimmt zu simplen für die DB Freaks hier ^^ Aber für die, die grad mitdem angefangen haben ( z.B n newbe wie mich ) eher nicht ...

    Hier zur Aufgabenstellung

    Code:
    In der Tabelle SCHUELER[[U]SNR[/U]; Name; Vorname; Geschl; GebDat; Klasse] sind die Schüler deines Gymnasiums gespeichert. Die Klasse 12b fährt kommenden Montag für eine Woche auf Studienfahrt. Der Klassenlehrer will überprüfen. welche seiner Schüler bereits volljährig sind und deswegen in einer Tabelle die Namen seiner Schüler sowie deren jeweiliges Alter am ersten Tag der Klassenfahrt haben. Forumliere die zugehörige SQL-Abfrage !
    So ... alles schön und gut !
    Nun verstehe ich nicht ganz, wie ich das mitden Jahresdaten machen soll ???
    Ziel ist es, eine sinnvolle Abfrage mithilfe von einer Erweiterung , .zb Term o.ä ähnliches zu erreichen, ohne von selbst irgendwelche neue Spalten anzusetzen oder ''NUR'' mit WHEN Bedienungen ...

    Hätte da jemand eine Idee ??
    Hier das Grundgerüst ohne Bedienung oder Term

    SQL ohne Term oder Bedienung

    Code:
    SELECT Name, Vorname, GebDat, Klasse
    FROM SCHUELER
    
    Wär echt cool wenns jemand hinkriegt
    GLG !!
     
  2. 9. Juni 2008
    AW: SQL Abfrage ... plz Help

    Code:
    SELECT Name, Vorname, GebDat, Klasse
    FROM SCHUELER
    WHERE DateDiff(year, 'GebDat', '*klassenfahrtsdatum*')>=18
    so ungefähr müsste das wohl funktionieren, er zeigt dann nur die Leute an, wo das gebjahr mindestens 18Jahre von dem klassenfahrstdatum entfernt ist, wenn du es noch mit tagen und so machen willst, findest du Hier noch paar Infos zu Datediff:
    DateDiff
    DATEDIFF (Transact-SQL)
     
  3. 9. Juni 2008
    AW: SQL Abfrage ... plz Help

    Hey
    danke für die Info ! Jetzt bin ich aufjedenfall schlauer =P
    Aber leider kommt bei mir dann eine Fehlermeldung ?

    Hab anfangs gedacht das leigt vll am Datum !
    Hab aber alles mögliche probiert ( 1/1/2008 od. 2008-1-1 usw. )
    nix hat geklappt =(

    http://i31.tinypic.com/2mnk5c9.jpg

    Weis jemand ne Antwort ??
    LG
     
  4. 9. Juni 2008
    AW: SQL Abfrage ... plz Help

    Hi,

    zunächst mal stellt sich mir die Frage, welches Format die Spalte GebDat hat. Hoffentlich ein Datum, oder?

    Naja, die Referenz (http://dev.mysql.com/doc/refman/6.0/en/date-and-time-functions.html#function_datediff) sagt, dass '2008-01-01' gehen sollte.

    Nur sagt, die Referenz auch, dass die Funktion DATEDIFF() zwei Parameter entgegen nimmt, diese müssen in das Dateformat konvertierbar sein.

    Code:
    SELECT DATEDIFF('2008-02-03', '1985-02-03');
    ergibt somit 8400 (Tage). Dies ergibt unter Berücksichtigung der Schaltjahre 23 Jahre.

    Hoffe das hilft.

    BG MaxDev

    EDIT:

    Noch nachvollziehbarer ist warscheinlich, einfach zu addieren:
    Code:
    SELECT '1985-01-01' + INTERVAL 18 YEAR;
    Das führt für Deine Abfrage dann zu
    Code:
    SELECT Name, Vorname, GebDat, Klasse
    FROM SCHUELER
    WHERE GebDat + INTERVAL 18 YEAR >= DATE(*Klassenfahrtsdatum*)
    EDIT 2:

    Sorry, war gleich bei MySQL...
     
  5. 9. Juni 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: SQL Abfrage ... plz Help

    mhhh ... geht leider immernoch nicht =/
    Hat jemand vll OpenOffice Base auf dem Rechner installiert ??

    Hier meine DB Datei ... Datums Spalte auf DatumsFormat umgestellt und bei der Abfrage alles mögliche probiert ... leider zeigt er mir immernoch das falsche an bzw. zeigt mir einen Fehler !

    Hat jemand ne idee worum das liegen könnte `???HIER DIE DB DATEI

    EDIT :

    Die DB File mit dem Code von MaxDev
    DB FILE MIT INTERVALL 18

    Geht leider immernoch nicht !
    Rein an der Logik is alles ok denk ich mal ... irgendeine Kleinigkeit stört .. aber was ?!
     
  6. 9. Juni 2008
    AW: SQL Abfrage

    Hi,

    so hat's bei mir funktioniert...

    Code:
    SELECT "Name", "Vorname", "GebDat", "Klasse"
    FROM SCHUELER
    WHERE DATEDIFF('yy', "GebDat", '2008-01-02') >= 18
    
    Hoffe das hilft.

    BG MaxDev
     
  7. 10. Juni 2008
    AW: SQL Abfrage

    Also so würde ich es in MySQL machen:

    Code:
    SELECT "Name", "Vorname", "GebDat", "Klasse"
    FROM SCHUELER
    WHERE DATE_ADD(GebDat, INTERVAL 18 YEAR) <= '2008-01-02'
    In der Aufgabenstellung steht aber nicht, dass man nur die ausgeben soll die zu dem zeitpunkt 18 sind, ausgeben soll, sondern ihren namen und ihr alter zu dem zeitpunkt.

    Code:
    SELECT "Name", "Vorname", year('2008-01-02'-GebDat) as Alter
    FROM SCHUELER
    wobei ich mir nich sicher bin ob year('2008-01-02'-GebDat) funktioniert...
     
  8. 11. Juni 2008
    AW: SQL Abfrage

    Ok das von MaxDev hat geklappt !!
    Dimi deins leider nicht .. aber von der Logik her ist deins sinnvoll .. wahrscheinlich nur irgendein kleiner Syntaxfehler oder sonst was ...

    Aber jedenfalls habe ich nun DATEDIFF() näher kennengelernt !
    Achja ihr habt alle ne BW bekommen !!
     
  9. 11. Juni 2008
    AW: SQL Abfrage

    [X] Erledigt.

    ~closed~

    Mfg,

    Kolazomai
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.