Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Ergebnis Korrektur

Dieses Thema im Forum "Allgemeine Diskussionen" wurde erstellt von Maghrebi, 24 Januar 2013.

  1. Maghrebi

    Maghrebi Neuer Benutzer

    Hi Leute,
    ich weiß jetzt nicht ob ich die Frage hier richtig stelle aber naja ich hoffe mal.

    sitze momentan an einige SQL aufgaben leider habe ich nicht die Möglichkeit die SQL-Anfragen zu kontrollieren und möchte euch fragen ob ich es richtig gemacht habe.

    Bestimmen Sie die Namen aller Studenten, die mit je mindestens einem Kommilitonen aus demselben Semester eine Vorlesung besuchen.

    Meine Antwort sieht folgender maßen aus:

    Code:
    select distinct s.Name
    from Student s, Vorlesung v, hört h
    where s.MatrNr = h.MatrNr
    and h.VorlNr = v.VorlNr
    and v.VorlNr in (select s.min(*)
                    from Student s, Vorlesung v, hört h
                    where s.MatrNr = h.MatrNr
                    and h.VorlNr = v.VorlNr)
    Sagt bescheid, wenn ihr das Beispielschema sehen wollt.

    Danke :)
     
  2. Maghrebi

    Maghrebi Neuer Benutzer

    Lösung:

    Code:
    select distinct s1.Name
    from Student s1, Stundent s2, hört h1, hört h2
    where s1.semester = s2.semester
    and  s1.MatrNr = h1.MatrNr
    and  s2.MatrNr = h2.MatrNr
    and  h1.VorlNr = h2.VorlNr
    and  s1.MatrNr <> s2.MatrNr
     
  3. akretschmer

    akretschmer Datenbank-Guru


    Na sowas lieben wir: ganz neu reinschneien und die Hausaufgaben gemacht haben wollen! ;-)

    Ich hab mal diese Tabellen und Inhalte angelegt:

    Code:
    test=*# select * from studenten ;
     id |    name    | sg
    ----+------------+----
      1 | mueller    |  1
      2 | meier      |  1
      3 | schuster   |  1
      4 | mustermann |  2
      5 | heinz      |  2
      6 | kunze      |  3
    (6 rows)
    
    Time: 0,174 ms
    test=*# select * from vorlesung ;
     id | name
    ----+------
      1 | v1
      2 | v2
      3 | v3
    (3 rows)
    
    Time: 0,174 ms
    test=*# select * from teilnehmer ;
     id_vorlesung | id_stud
    --------------+---------
                1 |       1
                1 |       2
                1 |       3
                2 |       3
                2 |       4
                2 |       6
    (6 rows)
    
    Nun diese Abfrage:

    Code:
    test=*# select v.id v, s.id s, s.sg, count(1) over (partition by v.name,s.sg) from teilnehmer t left join vorlesung v on (t.id_vorlesung=v.id) left join studenten s on(t.id_stud=s.id) ;
     v | s | sg | count
    ---+---+----+-------
     1 | 1 |  1 |     3
     1 | 2 |  1 |     3
     1 | 3 |  1 |     3
     2 | 3 |  1 |     1
     2 | 4 |  2 |     1
     2 | 6 |  3 |     1
    (6 rows)
    
    Die ersten Spalten sind also Vorlesung und Stundent (die IDs), dann noch mal die Seminargruppe (so hab ich das mal genannt) und wie viele Teilnehmer pro Vorlesung und SG dabei sind.

    Diese Abfrage kannst Du nun nehmen, um alle v und s zu ermitteln, wo die Teilnehmerzahl größer oder gleich Deiner Schranke ist.


    Das dahin auszubauen überlasse ich jetzt Dir als Hausaufgabe ;-)


    Ach ja: Du hast kein DB-System genannt, ich verwende PostgreSQL.
     
  4. Maghrebi

    Maghrebi Neuer Benutzer

    Haha danke,

    sind wirklich keine Hausaufgaben ich habe die doch gemacht aber weiß nicht ob die anfrage so korrekt gestellt wurde :)
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Ähm, was spricht dagegen, sich auf seiner Kiste eine Datenbank seines geringsten Mißtrauens zu installieren und das austesten? Einklich nix, oder?
     
  6. Maghrebi

    Maghrebi Neuer Benutzer

    Wenn du mir sagen kannst wo ich sowas finde, dann wäre es echt super und sehr effektiv beim lernen
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Was, 'ne Datenbank zum installieren?

    Es gibt OpenSource, ich bevorzuge ja PostgreSQL. Gibt es als Klick-Installation auch für Windows. Es gibt MySQL, was aber zu Oracle gehört und IMHO keine gute DB ist. Es gibt außerden von den großen kommerziellen Systemen fast überall eine freie Demo-Version, die dann auf 4GB Daten oder so beschränkt sind, und/oder 1 CPU-Core oder so. Völlig ausreichend. Also, einfach eine aussuchen, installieren, fertsch. Das ist keine Magie.

    http://www.postgresql.org/download/

    Mal so als Anlaufstelle ...
     
  8. ukulele

    ukulele Datenbank-Guru

    Als Einstieg finde ich persönlich auch Microsoft SQL Express sehr gut, hauptsächlich weil ich SQL Studio als Werzeug sehr gerne mag und als Windows User findet man sich dort schnell zurecht, kann notfalls auch mal was über Menüs machen.

    Aber auch Postgre mag ich sehr, leider kommt es hier nicht zum Einsatz und mein letzter Kontakt ist ewig her.
     
  9. akretschmer

    akretschmer Datenbank-Guru

    Für Windows-User gibt es PGAdmin, was aber auch unter z.B. Linux läuft. Eine schicke bunte Oberfläche. Mir persönlich reicht das CLI-Tool 'psql' aber völlig aus.
    Die aktuellen Versionen, also ab 9.1 / 9.2, bieten eine Fülle von coolen Dingen, wenn Du das lange nicht mehr genutzt hast, wirst Du vieles nicht kennen...

    Andreas
     
  10. ukulele

    ukulele Datenbank-Guru

    Ich werd das selbst mal testen, finde aber schon eine grafische Oberfläche die mir Elemente in einer Datenbank (Tabellen, Spalten, Trigger, Views) anzeigt sehr nützlich, siehe MS SQL Studio. Gibt es zu PGAdmin noch sinnvolle Alternativen?
     
  11. akretschmer

    akretschmer Datenbank-Guru

    Sicher, PhpPgAdmin z.B., auch Kommerzware. Aber das PGAdmin ist einklich recht populär, das zeigt Dir schon alles an, also alle Objekt der DB und man kann da viel drin machen.

    http://www.pgadmin.org/


    Andreas
     
    ukulele gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden