Seite 1 von 1

In Tabelle "Objekt" in zwei Feldern auf Tabelle "Farbe" verw

Verfasst: Sa 26. Apr 2014, 17:43
von Roadrunner
Hallo

Ich bin seit ein paar Tagen erst dabei LibreOffice Base zu erkunden.

Ich habe eine Tabelle "Farbe" erstellt mit zwei Feldern
In der ersten Zeile in der ersten Spalte "ID" und in der zweiten Spalte "SMALLINTEGER" zugewiesen.
Die Zeile "ID" ist als Primärschlüssel definiert.
Dann mit Daten gefüllt.
1 gold
2 silber
3 bronze
usw.

Die Haupttabelle habe ich "Objekt" genannt und mehrere Felder angelegt.
JETZT KOMMT MEINE FRAGE
Ich habe in der Tabelle "Objekt" u.a. zwei Felder "Stickfarbe" und "FarbeGrundstoff".
Da beides Farben sind, möchte ich auf die Tabelle "Farbe" verweisen.
Und hier verließen sie mich. Ich habe versucht die Begriffe Primärschlüssel, Fremdschlüssel u. Sekundärschlüssel zu verstehen, scheitere aber an den Beispielen.

Kann mir jemand auf's Pferd helfen ? Danke im Voraus.

HAVE A NICE DAY
Michael

Re: In Tabelle "Objekt" in zwei Feldern auf Tabelle "Farbe"

Verfasst: Sa 26. Apr 2014, 18:40
von F3K Total
Hi und hallo,
bist du dir sicher, dass du in eine smallinteger (Ganzzahlen) den Text gold, silber, bronze hineingeschrieben hast? Kann eigentlich überhaupt nicht sein.
Gruß R

Re: In Tabelle "Objekt" in zwei Feldern auf Tabelle "Farbe"

Verfasst: Sa 26. Apr 2014, 20:13
von Freischreiber
Hallo Roadrunner,

herzlich willkommen als noch neuerer Neuzugang als ich...

Ich werde jetzt meine paar Kenntnisse versuchen loszuwerden, und bitte um Aufschreie, wenn ich was falsches erzähle.

Du hast wahrscheinlich der ID-Spalte den Datentyp "Small integer" zugewiesen. Geht anscheinend, Standard ist Integer, soviel ich weiß.
Zusätzlich hast du wahrscheinlich eine zweite Zeile im Bearbeiten-Modus mit Feldname "Farbe" überschrieben und als Feldtyp vermutlich einen Texttyp, am besten Text (Varchar).

In deiner Tabelle Farbe ist jetzt die erste Zeile der von dir ja so definierte Primärschlüssel, d. h. jede Farbnummer darf nur einmal vorkommen. Die Textbezeichnungen der Farbe sind Sekundärschlüssel dieser Tabelle.

In der Tabelle Objekt wird in den Farbspalten anstelle der wörtlichen Farbangaben die dazugehörige Nummer aus der Farbe-Tabelle stehen. Dort sind die Nummern Fremdschlüssel, da sie eigentlich aus der Farbe-Tabelle stammen.

Dann kannst du in der Objekt-Tabelle entweder zusätzlich ein eigenes ID-Feld vorsehen für einen eigenen Primärschlüssel, oder du definierst, wenn jede Farbkombination nur einmal vorkommen soll, einen kombinierten Primärschlüssel, der aus beiden Farbfeldern besteht.

Tip von mir für die Übersichtlichkeit: In der Tabelle Objekt am besten die Fremdschlüsselfelder so benennen, daß klar wird, welche Fremdschlüssel dort stehen, also etwa "Stickfarbe FarbeID" und "Grundstoff FarbeID". Sieht zwar am Anfang umständlicher aus, aber später versteht man die Tabelle noch.

Gruß
Freischreiber

Re: In Tabelle "Objekt" in zwei Feldern auf Tabelle "Farbe"

Verfasst: Sa 26. Apr 2014, 22:57
von Roadrunner
Hallo

Vielen Dank für die Info's.
"Freischreiber" hat es richtig dargestellt. (für mich als Anfänger ist es noch schwer an alle genauen Beschreibungen zu denken)
Der Vorschlag "Stickfarbe FarbeID" ... Ist sehr gut, danke dafür.

In der Tabelle "Objekt" habe Ich Daten aus LibreOffice Calc importiert und in den Feldern "Stickfarbe FarbeID" und
"Grundstoff FarbeID" stehen nur Zahlen. Diese werden den ID's der Tabelle "Farbe" zugeordnet.

Frage 1:
In einer Abfrage sollen Felder eingefügt werden, die den Text ( gold, silber ... ) für "Stickfarbe FarbeID" und
"Grundstoff FarbeID" wiedergeben.
Wie muss der Select Befehl dafür aussehen ?
SELECT "OBJEKT"."ID", "OBJEKT"."Stickfarbe FarbeID", "OBJEKT"."Grundstoff FarbeID"
FROM "OBJEKT", "FARBE"
WHERE ... ? WAS MUSS ICH HIER WEITER EINGEBEN ?

Die Abfrage ist Grundlage für die Berichtserstellung.

Frage 2:
In einem Bericht konnte Ich die Zahlen neben den entsprechenden Bildern wiedergeben
BildObjekt1 "Stickfarbe:" 1 "Grundstoff:" 7 ( Farbe.ID 7 = blau )
möchte dort aber die zugehörigen Texte stehen haben.
BildObjekt1 "Stickfarbe:" gold "Grundfarbe:" blau
WO MUSS ICH DIES ZUORDNEN ?

Vielen Dank im Voraus.
Michael

Re: In Tabelle "Objekt" in zwei Feldern auf Tabelle "Farbe"

Verfasst: So 27. Apr 2014, 08:51
von RobertG
Hallo Michael,

mit einer einfachen Abfrage wirst Du dabei nicht zu Rande kommen, da zu der Farb-Beziehung schließlich nur eine Farbe eindeutig identifiziert werden kann. Du könntest natürlich zuerst eine Abfrage "Stickfarben" und dann eine Abfrage "Grundstofffarben" zusammenbauen und die dann miteinander kombinieren. Es geht aber auch direkt:

Code: Alles auswählen

SELECT "a"."ID", "a"."Stickfarbe_ID", ( SELECT "Farbe" FROM "Farbe" WHERE "ID" = "a"."Stickfarbe_ID" ) AS "Stickfarbe", "a"."Grundstoff_ID", ( SELECT "Farbe" FROM "Farbe" WHERE "ID" = "a"."Grundstoff_ID" ) AS "Grundstoffarbe" FROM "Objekt" AS "a"
Ich habe die Elemente jetzt nicht genau so benannt wie bei Dir. Wichtig ist nur, dass Du der Tabelle "Objekt" ein Alias zuweist. Dann können die Unterabfragen auf die aktuellen Datensätze zugreifen.

Gruß

Robert

Re: In Tabelle "Objekt" in zwei Feldern auf Tabelle "Farbe"

Verfasst: So 27. Apr 2014, 22:22
von Roadrunner
Hallo RobertG

Vielen Dank, das hat sehr geholfen.
Ich war den ganzen Sonntag unterwegs, habe aber gerade die Abfrage erstellt. Die Farben werden wie gewünscht angezeigt.
<freuganzdolle>

Morgen nach der Arbeit geht es dann gleich weiter.

Danke an alle Beteiligten

HAVE A NICE DAY
Michael

Re: In Tabelle "Objekt" in zwei Feldern auf Tabelle "Farbe"

Verfasst: Di 29. Apr 2014, 22:29
von Roadrunner
Hallo
Die Abfrage ( gem. RobertG ) mit dem Alias "Farbzuordnung" zeigt die ID, sowie die Zahlen und Texte der Stickfarbe und Grundfarbe. Soweit, so Gut.

WIE BEKOMME ICH DIES JETZT IN DIE ABFRAGE "AbfrageObjekt" ? (dort stehen u.a. ja nur die Zahlen der Stickfarbe und Grundfarbe und halt noch viele andere Texte, die Ich aber zuordnen konnte, da sie sich jeweils nur auf eine Tabelle beziehen und keine doppelten Zuordnungen vorliegen).

So wie Ich es verstanden habe, kann einem Bericht nur auf EINE Abfrage zugewiesen werden. Und dies ist bei Mir eben "AbfrageOkjekt".
Ziel ist es in einem Bericht "KatalogObjekt" auch die Texte der Stickfarbe und Grundfarbe unter den entsprechenden Bildern aufzuführen.

Es wird für Mich immer undurchsichtiger.
Hoffentlich kann jemand Licht ins Dunkle bringen.

HAVE A NICE DAY
Michael

Re: In Tabelle "Objekt" in zwei Feldern auf Tabelle "Farbe"

Verfasst: Do 1. Mai 2014, 08:04
von Roadrunner
Hallo
Problem gelöst ! :-)
Ich habe in der Abfrage "AbfrageObjekt" im grafischen Bereich die Abfrage "Farbzuordnung" eingefügt und die beiden Felder "Objekt"."ID" und "Farbzuordnung"."ID" miteinander verbunden.

HAVE A NICE DAY
Michael