Wieso kann Primärschlüssel nicht abgefragt werden?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

eve
**
Beiträge: 45
Registriert: Mo, 15.06.2009 22:17

Wieso kann Primärschlüssel nicht abgefragt werden?

Beitrag von eve »

Hallo,

Ich habe da mal eine Verständnisfrage. Ich habe mich in letzter Zeit unter anderem mit folgender Seite weiter in SQL eingearbeitet.
http://www.w3schools.com/SQl/sql_join_left.asp

Die Abfrage dort funktioniert so wie sie dargestellt ist einwandfrei. Sobald ich aber die Spalte O_Id (Primärschlüssel der Tabelle Orders) auch darstellen will, dann bekomme ich die Fehlermeldung: „Die Dateninhalte konnten nicht geladen werden. No data is available“.
Wenn ich jetzt eine extra Spalte O_Id2 mit den Daten anlege und die Abfrage darauf beziehe, dann funktioniert es wieder. Meine Frage ist nun, wieso können die Daten der Spalte O_Id nicht angezeigt werden wenn sie als Primärschlüssel hinterlegt sind?

Gruß,
eve
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wieso kann Primärschlüssel nicht abgefragt werden?

Beitrag von komma4 »

Bei welcher Abfrage (SQL-Code) funktioniert das bei Dir nicht?

OOo Version und Betriebssystem?

Welche Datenbank nutzt Du? Treiber?

Hier klappt eine Abfrage auf einen Primärschlüssel der eingebauten HSQLDB problemlos.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Wieso kann Primärschlüssel nicht abgefragt werden?

Beitrag von hol.sten »

eve hat geschrieben:Sobald ich aber die Spalte O_Id (Primärschlüssel der Tabelle Orders) auch darstellen will, dann bekomme ich die Fehlermeldung: „Die Dateninhalte konnten nicht geladen werden. No data is available“.
Da ich mir nicht vorstellen konnte, warum das nicht funktionieren soll, habe ich das Beispiel mal mit OOo 3.2.0 auf Ubuntu 10.04 mit Java 1.6.0_16 und einer niegel nagel neuen HSQLDB ausprobiert. Und siehe da: Es funzt.

Sowohl:

Code: Alles auswählen

SELECT "Persons"."LastName", "Persons"."FirstName", "Orders"."OrderNo", "Orders"."O_Id"
 FROM "Persons" LEFT JOIN "Orders" ON "Persons"."P_Id" = "Orders"."P_Id"
 ORDER BY "Persons"."LastName"
als auch:

Code: Alles auswählen

SELECT "Persons"."LastName", "Persons"."FirstName", "Orders"."OrderNo", "O_Id"
 FROM "Persons" LEFT JOIN "Orders" ON "Persons"."P_Id" = "Orders"."P_Id"
 ORDER BY "Persons"."LastName"
liefern:

Code: Alles auswählen

LastName    FirstName    OrderNo    O_Id
Hansen      Ola          24562      4
Hansen      Ola          22456      3
Pettersen   Kari         44678      2
Pettersen   Kari         77895      1
Svendson    Tove                    0
Ein Primärschlüssel kann also abgefragt werden. Warum es in deinem Fall nicht klappt lässt sich aber ohne nähere Angaben von dir nicht beantworten.
eve
**
Beiträge: 45
Registriert: Mo, 15.06.2009 22:17

Re: Wieso kann Primärschlüssel nicht abgefragt werden?

Beitrag von eve »

Oh, ich hatte nicht nur die Spalte O_Id der Tabelle Orders, sondern auch die Spalte P_Id der Tabelle Persons abgefragt. In dem Fall kommt die Fehlermeldung. Wenn man P_Id aus der Tabelle Orders verwendet, dann geht es. Allerdings bleibt meine Frage trozdem in etwas abgeänderter Form bestehen. Warum kann mann O_Id nicht abfragen, wenn man zusätzlich P_Id aus einer anderen Tabelle abfragt?

Ich benutze übrigens OOo 3.3.0 und Windows XP/SP3
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Wieso kann Primärschlüssel nicht abgefragt werden?

Beitrag von hol.sten »

eve hat geschrieben:Allerdings bleibt meine Frage trozdem in etwas abgeänderter Form bestehen. Warum kann mann O_Id nicht abfragen, wenn man zusätzlich P_Id aus einer anderen Tabelle abfragt?
Auch das klappt wunderbar bei mir:

Code: Alles auswählen

SELECT "Persons"."LastName", "Persons"."FirstName", "Orders"."OrderNo", "Orders"."O_Id", "Orders"."P_Id", "Persons"."P_Id" FROM "Persons" LEFT JOIN "Orders" ON "Persons"."P_Id" = "Orders"."P_Id" ORDER BY "Persons"."LastName"
Poste doch mal dein SQL.
eve
**
Beiträge: 45
Registriert: Mo, 15.06.2009 22:17

Re: Wieso kann Primärschlüssel nicht abgefragt werden?

Beitrag von eve »

Hier ist der SQL:

Code: Alles auswählen

SELECT "Persons"."LastName", "Persons"."FirstName", "Orders"."OrderNo", "Orders"."O_Id", "Persons"."P_Id" FROM { OJ "Persons" LEFT OUTER JOIN "Orders" ON "Persons"."P_Id" = "Orders"."P_Id" } ORDER BY "Persons"."LastName" ASC
hol.sten
******
Beiträge: 871
Registriert: Fr, 18.11.2005 21:21

Re: Wieso kann Primärschlüssel nicht abgefragt werden?

Beitrag von hol.sten »

eve hat geschrieben:Hier ist der SQL:

Code: Alles auswählen

SELECT "Persons"."LastName", "Persons"."FirstName", "Orders"."OrderNo", "Orders"."O_Id", "Persons"."P_Id" FROM { OJ "Persons" LEFT OUTER JOIN "Orders" ON "Persons"."P_Id" = "Orders"."P_Id" } ORDER BY "Persons"."LastName" ASC
Bei mir erzeugt dieses SQL keinen Fehler sondern folgenden Output:

Code: Alles auswählen

LastName    FirstName    OrderNo    O_Id    P_Id
Hansen      Ola          24562      4       1
Hansen      Ola          22456      3       1
Pettersen   Kari         44678      2       3
Pettersen   Kari         77895      1       3
Svendson    Tove                    0       2
eve
**
Beiträge: 45
Registriert: Mo, 15.06.2009 22:17

Re: Wieso kann Primärschlüssel nicht abgefragt werden?

Beitrag von eve »

Ich habe die Tabelle und die Abfrage jetzt extra noch mal neu erstellt, aber wieder das gleiche. Ich bekomme nur die Fehlermeldung: "„Die Dateninhalte konnten nicht geladen werden. No data is available“.
Aber zumindest weiß ich jetzt, daß es prinzipiell schon möglich sein sollte und der Fehler wo anders liegt. Ich hatte mich nämlich gewundert, warum eine solche Abfrage nicht möglich sein sollte.

Gruß,
eve
Antworten