aus 2 mach 1

Psych

Benutzer
Beiträge
6
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
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.423
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

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

Psych

Benutzer
Beiträge
6
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?
 

Psych

Benutzer
Beiträge
6
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
 

akretschmer

Datenbank-Guru
Beiträge
9.423
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


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

Psych

Benutzer
Beiträge
6
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
 

akretschmer

Datenbank-Guru
Beiträge
9.423
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.

Das klingt jetzt eher nach einem JOIN.

Wenns is kann ich zur veranschaulichung paar bilder hochladen?

Mfg Psych

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.
 

Psych

Benutzer
Beiträge
6
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
 

akretschmer

Datenbank-Guru
Beiträge
9.423
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.

Mfg Psych

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.
 

Psych

Benutzer
Beiträge
6
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
 

akretschmer

Datenbank-Guru
Beiträge
9.423
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

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.
 

gurbelunder

SQL-Guru
Beiträge
136
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?
 
Werbung:
Oben