[Code] [SQL] Ein paar Queries zur Korrektur ;D

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Prrovoss, 10. Dezember 2012 .

Schlagworte:
  1. 10. Dezember 2012
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    [SQL] Ein paar Queries zur Korrektur ;D

    hi,
    folgendes ist die hausaufgabe:
    Download: ES08_-_SQL1.pdf | www.xup.in

    und hier die lösungen, die wir bis jetzt haben:

    PHP:
    8.1
    a
    SELECT Person . name 
        FROM Movie
    , connection
        WHERE Movie
    . id  connection . from
        
    AND  Movie . id  connection . to
        
    AND  connection . type  'parody'    
            
            
    b SELECT name 
        FROM Person 
        WHERE birthday like 
    '___07%'


    c SELECT Movie . title 4
        FROM Movie
    director Person
        WHERE Movie
    . id  director . movie
        
    AND  director . person  Person . id
        GROUP BY Movie
    . title HAVING count (*) >  1
        
            
    d
    SELECT person . id person . name COUNT ( movie . id
        
    FROM Movie actor Person
        WHERE Movie
    . id  actor . movie
        
    AND  actor . person  Person . id
        GROUP BY person
    . id 
            
        
    e
    SELECT Movie . title 
        FROM Movie
    actor Person 
        WHERE Movie
    . id  actor . movie
        
    AND  actor . person  person . id
        
    AND  Person . name  'Ted Codd'
        
    AND  NOT Person . name  'Ray Boyce'
            
            
    f SELECT Person . name 
        FROM Person
    actor director Movie 
        WHERE Person
    . id  actor . person
        
    AND  Person . id  director . person
        
    AND  actor . movie  movie . id
    ist das soweit korrekt? und für g hab ich noch keinen ansatz, wie man da vorgehen könnte.

    die zweite aufgabe könnt ihr ignorieren^^
     
  2. 10. Dezember 2012
    Zuletzt bearbeitet: 10. Dezember 2012
    AW: [SQL] Ein paar Queries zur Korrektur ;D

    Ich schaue mal durch. Was mir gerade auffällt:

    bei der b) würde ich den Vergleichsstring ändern in:
    Code:
    LIKE '__.07.____'
    Deins würde aber auch funktionieren. Ist imho nur verständlicher.

    Bei der c):
    Ist dir da die 4 nach Movie.title reingerutscht? Muss wohl eher ein Komma hin.

    Bei der e):
    Wenn du die Abfrage so aufbaust, dann kommen bestimmte Filme ggf. doppelt in der Ergebnisrelation vor. Da musst du nochmal nachschauen. Zudem ist es glaub nicht korrekt.

    Die f) ist auch unvollständig. Du lässt außer Acht, dass die Personen in mind. zwei Filmen Actor und Directer waren.

    Am besten baust du dir die ganzen Relationen schnell mit der MySQL Workbench o.Ä. nach und versuchst die Aufgaben dann zu lösen. Das macht einem die Sache wesentlich einfacher und fördert das Verständnis.

    greez
     
    1 Person gefällt das.
  3. 11. Dezember 2012
    Zuletzt bearbeitet: 11. Dezember 2012
    AW: [SQL] Ein paar Queries zur Korrektur ;D

    haha ja sehr merkwürdig wie die da hinkam



    da haben wir jetzt nur ein distinct eingebaut:
    PHP:
    SELECT DISTINCT Movie . title 
        FROM Movie
    actor Person 
        WHERE Movie
    . id  actor . movie
        
    AND  actor . person  person . id
        
    AND  Person . name  'Ted Codd'
        
    AND  NOT Person . name  'Ray Boyce'
    ob der rest semantisch korrekt ist, da waren wir uns nich so ganz sicher, aber sieht eig ganz gut aus finde ich





    jop die war noch nich ganz fertig^^ sieht jetzt so aus:
    PHP:
    SELECT Person . name 
        FROM Person
    actor director Movie 
        WHERE Person
    . id  actor . person
        
    AND  Person . id  director . person
        
    AND  actor . movie  movie . id
        GROUP BY Person
    . id HAVING count (*) >  1    





    und g) haben wir so aufgebaut:
    PHP:
    SELECT distinct person . name from Person Where person . id IN  (
    select person . name 
    from actor
    Person
    where actor
    . person  person . id 
    group by person
    . id having count ( person . id )> avg ( 2 )) 
    die müsste so eigendlich einwandfrei funktionieren, die haben wir mal mit den imdb tabellen ausprobiert.


    ach und hierzu nochma ne frage:
    ich meine ja^^ stimmt das?
     
  4. 11. Dezember 2012
    Zuletzt bearbeitet: 11. Dezember 2012
    AW: [SQL] Ein paar Queries zur Korrektur ;D

    Ohne HAVING kannst du keine Abfragen einbauen die sich auf via AS selektierte Felder beziehen oder Funktionen wie SUM() oder COUNT() (Aggregation) verwenden.

    Achtung, Pseudo-Query.

    Falsch:
    Code:
    SELECT `id` + 1 AS `next`
    FROM `table`
    WHERE `next` > 10
    WHERE sucht nach dem Feld `next`, welches aber nicht existiert da es innerhalb von SELECT erzeugt wurde.

    Richtig:
    Code:
    SELECT `id` + 1 AS `next`
    FROM `table`
    HAVING `next` > 10
     
    1 Person gefällt das.
  5. 11. Dezember 2012
    AW: [SQL] Ein paar Queries zur Korrektur ;D

    ja stimmt, an aggregation hab ich da garnich gedacht. ich hab die ganze zeit nur an die relationale vollständigkeit gedacht, die is ohne having ja noch gegeben.
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.