tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
424
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sebasian9832 sebasian9832 ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    4
    Hallo liebe Community,

    ich habe folgende Aufgabe, die ich trotz mehrerer Stunden intensiver Bemühungen nicht lösen kann.
    So viel sei gesagt, ich kriege am Ende immer Scotland und England angezeigt; nur England ist jedoch richtig...

    Aufgabe:
    Zeigen Sie das Land/die Länder, in denen ALLE concert_orgniser (NICHT orgAniser) bereits waren.


    TABLE: PLACE

    place_no--------place_town-------place_country
    ----------------------------------------------------------------
    1------------------Manchester--------England
    2------------------Edinburgh----------Scotland
    3------------------Salzburg-----------Austria
    4------------------New York----------USA
    5------------------Birmingham-------England
    6------------------Glasgow------------Scotland
    7------------------London--------------England
    8------------------Chicago-------------USA
    9------------------Amsterdam--------Netherlands


    TABLE: CONCERT

    concert_in--------concert_orgniser
    -----------------------------------------------
    1---------------------21
    1----------------------3
    2----------------------3
    2---------------------21
    3----------------------8
    7----------------------8
    9----------------------8
    4---------------------21


    Tables können über JOIN ON concert_in = place_no verbunden werden.


    Habt Ihr Lösungsvorschläge? Muss diese Aufgabe bis Ende der Woche lösen und vorstellen... Wäre euch wirklich sehr dankbar für Eure Hilfe!
    Geändert von sebasian9832 (06.11.07 um 23:42 Uhr)
     

  2. #2
    sebasian9832 sebasian9832 ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    4
    Hat denn keiner zumindest eine erste Idee?
     

  3. #3
    Avatar von Online-Skater
    Online-Skater Online-Skater ist offline Mitglied Brillant
    Registriert seit
    Sep 2004
    Ort
    Rostock
    Beiträge
    891
    Zitat Zitat von sebasian9832 Beitrag anzeigen
    Aufgabe:
    Zeigen Sie das Land/die Länder, in denen ALLE concert_orgniser (NICHT orgAniser) bereits waren.
    Versteh ich nicht was ist das für eine Aufgabenstellung ?
    Die Spalte enthält Zahlen und in der Aufgabe hört man ein Datum raus ? ...
    Besser formulieren bitte.
     

  4. #4
    sebasian9832 sebasian9832 ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    4
    Jeder der concert_orgniser (3, 8, 21) haben bereits Konzerte veranstaltet in den verschiedenen Ländern (siehe concert_in).

    Frage ist nun, in welchem Land sowohl 3, als auch 8 als auch 21 waren. Dies ist lediglich England.

    Allerdings weiß ich nicht, wie ich die Abfrage gestalten muss.

    Hoffe die Aufgabenstellung ist noch klarer...
     

  5. #5
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    Schau mal hier:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    CREATE TABLE places (id INT, town VARCHAR(32), country VARCHAR(32));
     
    INSERT INTO places VALUES (1,'Manchester','England');
    INSERT INTO places VALUES (2,'Edinburgh','Scotland');
    INSERT INTO places VALUES (3,'Salzburg','Austria');
    INSERT INTO places VALUES (4,'New York','USA');
    INSERT INTO places VALUES (5,'Birmingham','England');
    INSERT INTO places VALUES (6,'Glasgow','Scotland');
    INSERT INTO places VALUES (7,'London','England');
    INSERT INTO places VALUES (8,'Chicago','USA');
    INSERT INTO places VALUES (9,'Amsterdam','Netherlands');
     
    CREATE TABLE concerts (id INT, organizer INT);
     
    INSERT INTO concerts VALUES(1,21);
    INSERT INTO concerts VALUES(1,3);
    INSERT INTO concerts VALUES(2,3);
    INSERT INTO concerts VALUES(2,21);
    --insert into concerts values(2,8);
    INSERT INTO concerts VALUES(3,8);
    INSERT INTO concerts VALUES(7,8);
    INSERT INTO concerts VALUES(9,8);
    INSERT INTO concerts VALUES(4,21);

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    mysql> SELECT * FROM places;
    +------+------------+-------------+
    | id   | town       | country     |
    +------+------------+-------------+
    |    1 | Manchester | England     |
    |    2 | Edinburgh  | Scotland    |
    |    3 | Salzburg   | Austria     |
    |    4 | NEW York   | USA         |
    |    5 | Birmingham | England     |
    |    6 | Glasgow    | Scotland    |
    |    7 | London     | England     |
    |    8 | Chicago    | USA         |
    |    9 | Amsterdam  | Netherlands |
    +------+------------+-------------+
    9 ROWS IN SET (0.00 sec)

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    mysql> SELECT * FROM concerts;
    +------+-----------+
    | id   | organizer |
    +------+-----------+
    |    1 |        21 |
    |    1 |         3 |
    |    2 |         3 |
    |    2 |        21 |
    |    3 |         8 |
    |    7 |         8 |
    |    9 |         8 |
    |    4 |        21 |
    +------+-----------+
    8 ROWS IN SET (0.00 sec)

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    mysql> 
    SELECT x.country FROM (
        SELECT p.id,p.country,COUNT(DISTINCT c.organizer) organizerCount FROM places p INNER JOIN concerts c ON p.id = c.id GROUP BY country
    ) x WHERE x.organizerCount >= ALL(SELECT COUNT(DISTINCT organizer) FROM concerts);
    +---------+
    | country |
    +---------+
    | England |
    +---------+
    1 ROW IN SET (0.00 sec)

    Fügt mann dann noch einen Satz zu den Konzerten in Scottland hinzu:

    Code sql:
    1
    
    INSERT INTO concerts VALUES(2,8);

    Bekommt man:

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    mysql> SELECT x.country FROM (
        ->     SELECT p.id,p.country,COUNT(DISTINCT c.organizer) organizerCount FROM places p INNER JOIN concerts c ON p.id = c.id GROUP BY country
        -> ) x WHERE x.organizerCount >= ALL(SELECT COUNT(DISTINCT organizer) FROM concerts);
    +----------+
    | country  |
    +----------+
    | England  |
    | Scotland |
    +----------+

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  6. #6
    sebasian9832 sebasian9832 ist offline Grünschnabel
    Registriert seit
    Nov 2007
    Beiträge
    4
    Vielen Dank Tom!

    Wirklich viel Mühe hast Du Dir gegeben.
    Der Vorletzte, längere SQL Code, ist ja genau das, was zur Lösung führt.

    Jedoch verstehe ich nicht genau, wie das nun funktioniert hat.

    Könntest Du mir das mal formulieren, was da wie abgefragt wird?


    Dankeschön für Deine Hilfe
     

Ähnliche Themen

  1. Knifflige Aufgabe im Adobe Illustrator
    Von _Alex_ im Forum Vektor-Programme
    Antworten: 5
    Letzter Beitrag: 30.08.10, 09:11
  2. knifflige Abfrage
    Von Online-Skater im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 09.06.06, 00:26
  3. Antworten: 3
    Letzter Beitrag: 04.01.06, 20:22
  4. Antworten: 10
    Letzter Beitrag: 19.11.04, 22:52
  5. Knifflige Mathe Aufgabe bitte helft mir
    Von danielmueller im Forum Smalltalk
    Antworten: 10
    Letzter Beitrag: 28.05.04, 16:38