1.1k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo zusammen,

verzweifle gerade etwas an einer SQL-Übung. Aus
folgendeTabellen:

KOMPONIST (KNR, NAME, VORNAME, GEBOREN,
GESTORBEN)
STUECK (SNR, KNR --> KOMPONIST, TITEL,
TONART, OPUS)
CD (CDNR, NAME, HERSTELLER, ANZ CDS,
GESAMTSPIELZEIT)
AUFNAHME (CDNR --> CD, SNR -->
STUECK, ORCHESTER, LEITUNG)
SOLIST ((CDNR, SNR) --> AUFNAHME, NAME
, INSTRUMENT)

Welche Solisten sind an Aufnahmen der CD's mit den CD-
Nummern 102 sowie 109
beteiligt gewesen? (Name des Solisten und CD-Nummer)

Bis jetzt bin ich hier:
<code>
SELECT cdnr, name FROM solist
INNER JOIN aufnahme
ON (solist.cdnr = aufnahme.cdnr AND solist.snr = aufnahme.snr)
WHERE cdnr = "102" OR cdnr = "109";
</code>

Das funktioniert jedoch leider nicht...habe die Primärschlüssel fett
und unterstrichen gekennzeichnet, bzw. die Pfeile zeigen, was ein
Fremdschlüssel wohin ist.

Grüße

2 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
funktioniert
Fehlermeldungen sagen mehr als nur "nein". In der Abfrage sind die Spalten nicht eindeutig: cdnr existiert sowohl in der einen als auch in der anderen Tabelle, und das Datenbankverwaltungssystem weiß nicht, welche von beiden du meinst. Daher:
SELECT solist.cdnr, solist.name
FROM solist
INNER JOIN aufnahme
ON( solist.cdnr= aufnahme.cdnr AND solist.snr= aufnahme.snr )
WHERE cdnr IN( 102, 109 );
0 Punkte
Beantwortet von
Verspätetes aber herzliches Danke!
...