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

aus 2 mach 1

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Psych, 16 Juli 2013.

  1. Psych

    Psych Benutzer

    Hallo ihr pros und prosinen,

    ich habe ein Problem und zwar sitz ich hier in ner Umschulung zum Systemintegrator und hab grad mysql projekttag ohne dozent, also keine sau da mit Plan den man fragen kann :)

    Wir haben sowas wie eine cd verwaltung geschrieben (wir benutzen hier xampp und cmd zum eingeben der Befehle) mit mehreren Tabellen zb: titel, interpreten, cdalbum,titelcd usw

    nun zu meinem Problem...

    Wir sollen in die Tabelle 'titelcd' die 2 Primärkeys der Tabellen titel(TNR) und cdalbum(CDNR) einfügen und zwar mit nem Befehl -->"den kein schwein kennt ^_^ "<--

    Wir sollen also die TNR's mit den CDNR's verbinden was soviel bedeutet wie "welcher titel ist auf welcher cd"...

    Mein codeansatz bis jetzt ist:
    Code:
    mysql> insert into titelcd
          (CDNR)select cdalbum.cdnr
          from cdalbum where cdalbum.cdnr=9,
          (TNR)select titel.tnr
          from titel where titel.tnr<63;
    nur bekomme ich da immer den fehler: das vor (TNR) syntaxfehler ist. Auch bei abändern des Codes bekomme ich entweder syntaxfehler oder "Subquery returns more than 1 rows" ?!?

    Ich hoffe ihr könnt mit den Infos bisserl was anfangen um mir da weiterzuhelfen damit ich keine fehler mehr bekomme und das mal n bisserl check ;)

    Bei Fragen steh ich gern zur verfügung :)

    Mfg Psych
     
  2. akretschmer

    akretschmer Datenbank-Guru

    insert into table (col1, col2) select col1, col2 from othertable ...
     
  3. ukulele

    ukulele Datenbank-Guru

    ...und es darf nur ein Select hinter dem Insert folgen der alle Werte bereit stellt.
     
  4. Psych

    Psych Benutzer

    Code:
    mysql> insert into titelcd
        -> (CDNR,TNR)select CDNR,TNR from...
    also meint ihr so?

    ich würde jetzt weitermachen mit "from cdalbum, titel;

    oder eher "from cdalbum"; aber dann greift der ja nur auf die tabelle cdalbum zu und lässt die tabelle titel aus oder?
     
  5. Psych

    Psych Benutzer

    hmm also ich habs auch noch mit
    Code:
    mysql> insert into titelcd
        -> (CDNR,TNR)select CDNR=9,TNR<63 from cdalbum,titel;
    
    probiert aber da bekomme ich nur den fehler: ERROR 1062 (23000): Duplicate entry '1-0' for key 'PRIMARY'

    Ich habe 10 cd's (also 10 verschiedene CDNR's) und 100 titel (100 TNR's)

    irgend was mache ich falsch nur ich komm ned drauf -.-

    Mfg Psych
     
  6. akretschmer

    akretschmer Datenbank-Guru


    Ja, was soll denn "select CDNR=9,TNR<63" ergeben?
     
  7. Psych

    Psych Benutzer

    das er mir die CDNR (Also die cd id) nummer 9 mit allen TNR's (Titelnummern) die kleiner als 63 sind verbindet.
    Ich versuche in der Tabelle eine Beziehung zwischen den CD's und den Titeln zu machen.

    Wenns is kann ich zur veranschaulichung paar bilder hochladen?

    Mfg Psych
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Das klingt jetzt eher nach einem JOIN.

    Bilder schaue ich mir nicht an. Zeige, wie die Tabellen definiert sind und was drin steht und was passieren soll. Nutze Code-Blöcke für eine lesbare Formatierung.
     
  9. Psych

    Psych Benutzer

    Oh?..wtf isn Join?!?..wir sind grad mal bei insert und select..mal googeln :)

    Meinst du mit zeigen wie sie definiert sind so?:

    Code:
    mysql> select * from interpreten;
    +-----+----------------+---------------+
    | INR | bandname      | nationalitaet |
    +-----+----------------+---------------+
    |  9 | queen          | England      |
    |  10 | Pink Floyd    | England      |
    |  11 | Ambros/Tauchen | oesterreich  |
    |  12 | Boehse Onkelz  | Deutschland  |
    +-----+----------------+---------------+
    INR is auto_increment

    Code:
    mysql> select *from cdalbum;
    +------+----------------------+-------------+----------+
    | CDNR | name                | erscheinung | standort |
    +------+----------------------+-------------+----------+
    |    6 | Watzmann            |        2005 | box      |
    |    7 | wish you were here  |        1992 | cd-rack  |
    |    8 | sheer heart attack  |        1984 | box      |
    |    9 | a night at the opera |        1992 | box      |
    |  10 | Heilige Lieder      |        2003 | cd-rack  |
    +------+----------------------+-------------+----------+
    CDNR is auto_increment

    Code:
    mysql> describe titelcd;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | TNR  | smallint(6) | NO  | PRI | 0      |      |
    | CDNR  | smallint(6) | NO  | PRI | 0      |      |
    +-------+-------------+------+-----+---------+-------+

    Code:
    mysql> select * from titel;
    +-----+----------------------------------------+----------+----------+------+
    | TNR | bezeichnung                            | dauer    | genre    | INR  |
    +-----+----------------------------------------+----------+----------+------+
    |  50 | Brighton Rock                          | 00:05:10 | pop      |    9 |
    |  51 | Killer Queen                          | 00:03:00 | pop      |    9 |
    |  52 | Tenement funster                      | 00:02:46 | pop      |    9 |
    |  53 | Flick of the wrist                    | 00:03:17 | pop      |    9 |
    |  54 | Lily of the valley                    | 00:01:45 | pop      |    9 |
    |  55 | Now I'm here                          | 00:04:13 | pop      |    9 |
    |  56 | in the lap of the gods                | 00:03:22 | pop      |    9 |
    |  57 | stone cold crazy                      | 00:02:14 | pop      |    9 |
    |  58 | Dear friends                          | 00:01:07 | pop      |    9 |
    |  59 | misfire                                | 00:01:49 | pop      |    9 |
    |  60 | bring back that Leroy Brown            | 00:02:15 | pop      |    9 |
    |  61 | she makes me (Stormtroopers stilettos) | 00:04:09 | pop      |    9 |
    |  62 | in the lap of the gods (revistited)    | 00:03:45 | pop      |    9 |
    |  63 | Shine On You crazy Diamond (part I)    | 00:13:33 | ballade  |  10 |
    |  64 | Welcome to the machine                | 00:07:26 | ballade  |  10 |
    |  65 | Have a cigar                          | 00:05:07 | ballade  |  10 |
    |  66 | Wish youe were here                    | 00:05:40 | ballade  |  10 |
    |  67 | Shine On You crazy Diamond (part II)  | 00:12:21 | ballade  |  10 |
    |  68 | Overt?re                              | 00:10:35 | rustical |  11 |
    |  69 | Gespr?ch der Knechte                  | 00:03:52 | rustical |  11 |
    |  70 | Das Rufen                              | 00:04:35 | rustical |  11 |
    |  71 | Der Berg                              | 00:04:40 | rustical |  11 |
    |  72 | Die Jagd                              | 00:02:34 | rustical |  11 |
    |  73 | Oh St.Hubertus                        | 00:05:39 | rustical |  11 |
    |  74 | Die Gailtalerin, Teil 1                | 00:03:58 | rustical |  11 |
    |  75 | Die Gailtalerin, Teil 2                | 00:03:28 | rustical |  11 |
    |  76 | Aufi, Aufi                            | 00:04:51 | rustical |  11 |
    |  77 | Er f?llt                              | 00:03:50 | rustical |  11 |
    |  78 | death on two legs                      | 00:03:43 | pop      |    9 |
    |  79 | lacing on a sunday afternoon          | 00:01:07 | pop      |    9 |
    |  80 | i'm in love with my car                | 00:03:04 | pop      |    9 |
    |  81 | you're my best friend                  | 00:02:52 | pop      |    9 |
    |  82 | '39                                    | 00:03:30 | pop      |    9 |
    |  83 | sweet lady                            | 00:04:03 | pop      |    9 |
    |  84 | seaside rendevous                      | 00:02:14 | pop      |    9 |
    |  85 | the prophet's song                    | 00:08:20 | pop      |    9 |
    |  86 | love of my live                        | 00:03:30 | pop      |    9 |
    |  87 | good company                          | 00:03:23 | pop      |    9 |
    |  88 | bohemian rhapsody                      | 00:05:54 | pop      |    9 |
    |  89 | god save the queen                    | 00:01:13 | pop      |    9 |
    |  90 | Angst ist nur ein Gef?hl              | 00:04:38 | hardrock |  12 |
    |  91 | Buch der Erinnerungen                  | 00:04:37 | hardrock |  12 |
    |  92 | Der Schrei nach Freiheit              | 00:03:45 | hardrock |  12 |
    |  93 | Diese Lieder                          | 00:05:11 | hardrock |  12 |
    |  94 | Ein langer Weg                        | 00:04:20 | hardrock |  12 |
    |  95 | gehaát, verdammt, verg?ttert          | 00:03:08 | hardrock |  12 |
    |  96 | gestern war heut noch morgen          | 00:03:49 | hardrock |  12 |
    |  97 | Heilige Lieder                        | 00:04:46 | hardrock |  12 |
    |  98 | ich bin in Dir                        | 00:03:53 | hardrock |  12 |
    |  99 | Intro - Oratorium                      | 00:01:43 | hardrock |  12 |
    | 100 | Norela                                | 00:03:26 | hardrock |  12 |
    | 101 | Scheiáegal                            | 00:02:38 | hardrock |  12 |
    +-----+----------------------------------------+----------+----------+------+
    So richtig?

    TNR is auto_increment und INR haben wir mit dem Befehl "update titel set INR=9 where genre="pop"; bestimmt.
    INR=9 bezieht sich auf die cd nummer 9 also queen.
    wie man sieht sind tnr und cdnr primärkeys und ich will die von den tabellen titel und cdalbum in die tabelle titelcd zusammenfügen.

    Unser Dozent sagte da gibts einen befehl mit dem man das so zusammenführen kann in ne neue tabelle nur der Befehl is dem gestern nimmer eingefallen also haben wie heut den käse :)

    Mfg Psych
     
  10. akretschmer

    akretschmer Datenbank-Guru

    Warum setzt Du INR auf 9, wenn sich das auf die CD-Nummer bezieht und 'Queen' ist? Mit dem Update hast Du alle INR auf 9 gesetzt, wo Genre 'POP' ist.
     
  11. Psych

    Psych Benutzer

    weil sich INR in der titel-tabelle auf die interpreten-nummer der interpreten-tabelle bezieht. Deswegen sollen wir in der titelcd-tabelle die cd-id also cdnr mit der TNR verbinden das wenn ich eine abfrage erstelle mir ausgegebn wirs zb wlcher titel ist auf welcher cd und von welchen interpreten etc.

    Mfg Psych
     
  12. akretschmer

    akretschmer Datenbank-Guru

    Du hast in den gezeigten Tabellen keine Information darüber, welcher Titel oder Album auf welcher CD ist. Oder ich übersehe es gerade.
    Scheinbar deswegen willst Du diese Tabelle titelcd ja befüllen, das geht aber nicht mit den vorhandenen Daten.
     
  13. gurbelunder

    gurbelunder Datenbank-Guru

    Bei MySQL und unter anderem auch bei Oracle gibt es das Statement "Merge", damit fügt man zum Beispiel zwei Tabellen zusammen. Vielleicht hilft der weiter ;)

    @akretschmar: korrigier mich bitte: gibts den auch in PostgreSQL?
     
  14. akretschmer

    akretschmer Datenbank-Guru


    Mir nicht bekannt.
     
  15. gurbelunder

    gurbelunder Datenbank-Guru

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