kh-ap
Goto Top

Kriterien für Access Abfrage

Ich habe eine Datenbank aus der ich 3 Kriterien abfragen will. Ich gebe als Kriterium: "nicht NAME" ein. In einer Spalte führt Access dieses Kriterium durch, sobald ich dies für die zweite Spalte eingebe, wird in der ersten Spalte wieder ein paar Zeilen mit dem eigentlich gelöschten Namen eingefügt die vorher entfernt wurden.

Content-Key: 19724

Url: https://administrator.de/contentid/19724

Printed on: April 19, 2024 at 00:04 o'clock

Mitglied: 18578
18578 Nov 15, 2005 at 11:17:25 (UTC)
Goto Top
Gibst Du diese nebeneinander oder schräg untereinander (gleichbedeutend jeweils mit Und / Oder)?

Vielleicht liegt es daran?

mfg icon99
Member: Biber
Biber Nov 15, 2005 at 11:39:47 (UTC)
Goto Top
Moin, KH-AP,
sonst wechsele in die SQL-Ansicht, ändere dort alle "OR"s in "AND"s und schau es Dir danach wieder in der Klicki-Bunti-Ansicht an.
Dann kennst Du für das nächste Statement die passende Eingabesyntax.

HTH Biber
Member: KH-AP
KH-AP Nov 15, 2005 at 11:44:54 (UTC)
Goto Top
moin
ne das hatte ich schon versucht
da war nix mit zu machen @ icon99

das mit dem Sql hatte ich mir schon ange´schaut, weil ich eigentlich selbst was gegen Access hab.. aber egal

werds dann mal ändern.. aber ich glaub es war schon alles als And eingetragen!
Wenn ich den einen Or eintrag zu nem And mache, wird es interpretiert als währe es nebeneinander... die Tabelle oder DB is dann nur noch halb so lang aber "Name" taucht immer noch auf
weitere ideen???
troztdem danke
Member: Biber
Biber Nov 15, 2005 at 11:55:12 (UTC)
Goto Top
Ja - poste doch den SQL-String - sonst raten wir doch nur rum..
Thx Biber
Member: KH-AP
KH-AP Nov 15, 2005 at 11:58:22 (UTC)
Goto Top
so hier mal der sql teil:
SELECT Kraftwerke.Nummer, Kraftwerke.Kraftwerk, Kraftwerke.Elektr_Leistung_in_MW, Kraftwerke.Ort, Kraftwerke.PLZ, Kraftwerke.Straße, Kraftwerke.Betreiber1, Kraftwerke.Betreiber2, Kraftwerke.Betreiber3, Kraftwerke.Typ, Kraftwerke.[Link Kraftwerksseiten], Kraftwerke.[Link Allgemein], Kraftwerke.[Link Anschrift Anfahrt], Kraftwerke.Betriebsleiter, Kraftwerke.Leittechniker, Kraftwerke.Geschäftsführer, Kraftwerke.[Anderer Ansprechpartner], Kraftwerke.Bemerkungen
FROM Kraftwerke
WHERE (((Kraftwerke.Betreiber1)<>"E.ON") AND ((Kraftwerke.Betreiber2)<>"E.ON"));

würds gern als externe datei anhägen, geht aber leider nit.. ansonsten schreib mail adr hin
mfg
felix
Mitglied: 18578
18578 Nov 15, 2005 at 12:32:43 (UTC)
Goto Top
Eine Idee hät ich noch;

schon mal über diesen Aufbauassistent (oder wie er auch immer sich nennt) versucht?!

ansonsten meine mail - adresse

icon99@web.de

mfg icon99
Member: KH-AP
KH-AP Nov 15, 2005 at 12:34:55 (UTC)
Goto Top
hi
ne noch nicht
werds mal weitergeben
weis schon warum kein Fan von Access bin
dachte was die mail adr angeht, halt falls jemandem ie sql-syntax nicht so lesen kann,
dem hätt ich die halt besser formatiert als mail zu geschickt!

aber gutm dann werd ich mal nach nem Aufbauassistenten ausschau halten

Mfg
Felix
Mitglied: 18578
18578 Nov 15, 2005 at 12:37:35 (UTC)
Goto Top
ich dachte eher mir den Kram mal mitzunehmen, um in ruhe darüber rum zu denken, mal sehe wie das hinkriege, melde mich auf jeden Fall noch mal.

mfg icon99
Member: KH-AP
KH-AP Nov 15, 2005 at 12:53:18 (UTC)
Goto Top
hi
danke
aber mit deinem Vorschlag ist man auch nicht weiter

weisst jemand ob unter access "<> Name" das gleiche ist wie "not Name" ???
würd mich mal interessieren, ich persönlich würde sagen nein, lasse mich aber gerne eines besseren belehren!

ruhig weiter antworten
felix
Member: Biber
Biber Nov 15, 2005 at 13:20:00 (UTC)
Goto Top
...
FROM Kraftwerke
WHERE NOT (((Kraftwerke.Betreiber1)="E.ON") OR ((Kraftwerke.Betreiber2)="E.ON"));
Member: KH-AP
KH-AP Nov 15, 2005 at 13:24:26 (UTC)
Goto Top
hi
schöner Versuch, geht aber leider aucht nicht!
es kommt dann
FROM Kraftwerke
WHERE ((((([Kraftwerke].[Betreiber1])="E.ON") Or (([Kraftwerke].[Betreiber2])="E.ON"))=False));

kA was access da veranstaltet!?
sag ja sch...... Access
Member: Biber
Biber Nov 15, 2005 at 13:46:48 (UTC)
Goto Top
...
FROM Kraftwerke
WHERE "E.ON" NOT IN (Kraftwerke.Betreiber1, Kraftwerke.Betreiber2)

Wieso kann Access eigentlich kein SQL?? face-wink
Member: KH-AP
KH-AP Nov 15, 2005 at 13:48:29 (UTC)
Goto Top
hi
ja keine Ahnung

wenn ich schon Datenbanken machen muss dann mach ich das (zumindest mit VB mit SQL oder dbase)

hoffe das funktioniert

oh man
Mitglied: 18578
18578 Nov 15, 2005 at 13:49:50 (UTC)
Goto Top
Weil das von MS nicht gewollt und keiner mehr ihren SQL - Server kaufen würde. face-smile
Soweit wie ich das in Erinnerung habe ist hinter Access auch kein richtiges SQL.

mfg icon99
Member: KH-AP
KH-AP Nov 15, 2005 at 13:55:12 (UTC)
Goto Top
nein
weil das von Microdoof ist und die prinzipiell keine Ahnung haben
siehe vista.. wie kann man immer noch so blöd sein und nicht zwischen Administrator und Benutzer unterscheiden!

aber zurück zum thema
also auch letzterer Funktion geht nicht!!!
er beschwert sich wegen dem komma
Wir arbeiten hier mit Access 2002 SP3 .. liegt es vielleicht an Versionsunterschieden??
Vermute so langsam es ist schlicht und ergreifend diese besch *.mdb Datenbank!!

sonst noch ideen.. das ganze geht nicht auf meine Kappe..
Mitglied: 18578
18578 Nov 15, 2005 at 14:23:43 (UTC)
Goto Top
Vielleicht die Trickkiste namens VBA, hat mir einigen Fällen auch schon weiter geholfen.

mfg icon99
Member: Biber
Biber Nov 15, 2005, updated at Oct 18, 2012 at 15:55:17 (UTC)
Goto Top
@KH-AP
Das mit dem Komma hab ich auch nicht verstanden - NATÜRLICH gehört da eigentlich ein Semikolon hin. Das wiederum hat Access 2002 SP3 bei mir angemeckert!

Ich habe bei einer Test-MDB, die neulich hier im Forum im Thread Abfrage mehrerer Tabellen mittels SQL-Query gepostet wurde, als gültiges SQL-Statement eingeben können:
SELECT Lieferer.*, Lieferer.Firmenname
FROM Lieferer
WHERE [Lieferer].[Firmenname] not IN ( "Computerwelt", "Pelikan")
In der Entwurfsansicht wird der WHERE-Part dargerstellt als
"Nicht In ("Computerwelt";"Pelikan")" ...mit Semikolon in der IN (...,..)-Liste.
Strange, dieses Access. Hat echt nichts mit SQL zu tun. Oder ich stell mich zu blöd an.
Member: Guenni
Guenni Nov 15, 2005 at 15:26:15 (UTC)
Goto Top
@KH-AP

Hi,

deine select-Anweisung:

SELECT Kraftwerke.Nummer, Kraftwerke.Kraftwerk, Kraftwerke.Elektr_Leistung_in_MW, Kraftwerke.Ort, Kraftwerke.PLZ, Kraftwerke.Straße, Kraftwerke.Betreiber1, Kraftwerke.Betreiber2, Kraftwerke.Betreiber3, Kraftwerke.Typ, Kraftwerke.[Link Kraftwerksseiten], Kraftwerke.[Link Allgemein], Kraftwerke.[Link Anschrift Anfahrt], Kraftwerke.Betriebsleiter, Kraftwerke.Leittechniker, Kraftwerke.Geschäftsführer, Kraftwerke.[Anderer Ansprechpartner], Kraftwerke.Bemerkungen
FROM Kraftwerke
WHERE (((Kraftwerke.Betreiber1)<>"E.ON") AND ((Kraftwerke.Betreiber2)<>"E.ON"));
Anweisung Ende

Wenn ich deine Tabellenstruktur sehe, behaupte ich mal, so kann das NIE funktionieren.

Betrachten wir nur mal die Felder, die du filtern willst.

<table border="1">
<tr>
<th> Betreiber1</th><th> Betreiber2</th><th> Betreiber3</th>
</tr>
<tr>
<td>E.ON</td><td>ZDF</td><td>WDR</td>
</tr>
<tr>
<td>ZDF</td><td>ARD</td><td>E.ON</td>
</tr>
<tr>
<td>NDR</td><td>SWR</td><td>ARTE</td>
</tr>
<tr>
<td>SAT1</td><td>E.ON</td><td>PRO7</td>
</tr>
</table>

In deiner select-Anweisung willst du dir alle 3 Betreiber-Spalten anzeigen lassen.

Dazu jetzt mal deine where-Klausel:

WHERE (((Kraftwerke.Betreiber1)<>"E.ON") AND ((Kraftwerke.Betreiber2)<>"E.ON"));

Teil 1 der where-Klausel: Alle Betreiber1, außer E.ON
Teil 2 der where-Klausel: Alle Betreiber2, außer E.ON

Teil 1 funkt. soweit, alle Betreiber aus deiner select-Anweisung werden angezeigt,
außer E.ON in Spalte Betreiber1.

Jetzt sollen im 2. Teil der where-Klausel auch die E.ON-Einträge der Spalte Betreiber2
verschwinden.
Da aber Datensätze nun mal in Reihen angelegt werden, erscheinen natürlich die
vorher gefilterten Einträge aus dem 1. Teil der where-Klausel wieder in der Ausgabe,
aufgrund dessen, da du ja in der select-Anweisung alle 3 Betreiber auswählst.

Wenn du dir die Tabelle anschaust, dann siehst du es auch selber.
Teil 1 würde die Reihen 2 ?4 ausgeben, Teil 2 die Reihen 1 ?3, womit der Eintrag
E.ON aus der Spalte Betreiber1 wieder angezeigt wird.

Um dieses Problem zu lösen, brauchst du also mind. 2 Tabellen:

Tabelle1 ? Betreiber
betreiberid --> eindeutige Kennung/darf nur EINMAL vorkommen
betreiber --> Name des Betreibers
und weitere Felder, die zum Betreiber gehören, wie Firmensitz, Kontaktperson etc.
Tabelle2 ? Kraftwerke
betreiberid --> hier gehört die Kennung aus Tabelle1 rein, darf jetzt MEHRMALS vorkommen, da ein Betreiber ja mehrere Kraftwerke betreibt, wenn ich das richtig verstehe.
kraftwerktyp --> erklärt sich selber
standort --> erklärt sich selber
leistung --> erklärt sich selber
und weitere Felder, die zum Kraftwerk gehören.

Daten, die in einer Tabelle wiederholt vorkommen, sind redundant und werden
normalerweise in einer eigenen Tabelle untergebracht. Die Tabellen werden dann
über Schlüsselfelder(im Beispiel ist es "betreiberid") verknüpft.

Eine entsprechende select-Anweisung könnte nun lauten:

select betreiber, kraftwerktyp, standort, leistung from betreiber, kraftwerke
where betreiber.betreiberid=kraftwerke.betreiberid and betreiber <> "E.ON"

Ich denke mal, dass es so geht.

Gruß
Günni

PS:

An alle Access-Feinde: SQL ist ein Standard, der von Access über MySQL bis hin zu Oracle gleich ist.
Mal abgesehen von einigen Funktionen, die der ein oder andere implementiert.
Diese Funktionen beeinträchtigen aber keinesfalls die Arbeitsweise von SQL.
Nur mal nebenbei.
Mitglied: 18578
18578 Nov 15, 2005 at 15:31:57 (UTC)
Goto Top
Ich glaub den kenn ich, dass mit den mehreren Tabellen hat er mir nicht nur einmal um die Ohren geschlagen.

mfg icon99
Member: KH-AP
KH-AP Nov 16, 2005 at 06:33:40 (UTC)
Goto Top
hi
ja, das das das Problem ist (is da jetzt ein "das" zuviel??), war mir schon halbwegs klar. Hab ja bis vor paar monaten x-Datenbanken programmieren müssen. Das is ja ne Firmen db.. mache das ja auch nicht selbst, sonder ne Kollegin von mir, der man das halt "einfach" mal aufgetragen hat. Würde mich nichtmal wundern wenn hier alle Tabellen und Datenbanken alles andere als logisch getrennt worden sind, also Vereinfacht worden sind.

Hab solche Problme ja bereits mit SQL und auch Dbase (wobei bei Dbase ja eine Tabelle gleich einer Datenbank ist) gelöst. Nur ist das schon zu lange her!
Werd mir die restliche Datenbank umgebung mal anschauen und zu sehen, dass das Teil mal gescheit vereinfacht wird!

Das Grundlegende Problem war / ist ja, das für ein Kraftwerk wieder mehree Betreiber in Frage kommen. Klingt komisch, ist aber so ;)

Mfg
Felix
Member: Guenni
Guenni Nov 16, 2005 at 20:13:33 (UTC)
Goto Top
@KH-AP

Hi,

Das Grundlegende Problem war / ist ja, das
für ein Kraftwerk wieder mehree
Betreiber in Frage kommen. Klingt komisch,
ist aber so ;)


Klingt keineswegs komisch. Als Beispiel der Datenbestand eines Immobilienhändlers:

Ein Kunde hat Interesse an mehreren Objekten, ein Objekt kann mehrere Interessenten
haben.

Oder Datenbestand eines Krankenhauses:

Ein Arzt hat viele Patienten, ein Patient kann von mehreren Ärzten behandelt werden.

Solche etwas nennt man m:m (mehrfach-zu-mehrfach) Beziehung, und kann in einer
relationalen Datenbank nicht abgebildet werden.

Dazu bedarf es dann einer weiteren Tabelle, in der die Beziehungen dargelegt werden.

<table border="1">
<tr>
<th>betreiber-id</th><th>kraftwerk-id</th>
</tr>
<tr>
<td>1</td><td>1</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>2</td><td>1</td>
</tr>
<tr>
<td>2</td><td>2</td>
</tr>
</table>

Was jetzt komisch klingt, ist, dass ich heute operiert worden bin und deshalb
nicht stundenlang vor'm PC sitzen kann.

Wenn's in 2 -3 Tagen geht, mache ich mir mal Gedanken darüber und poste dir
meine Ergüsse. So ein Modell habe ich selber auch noch nie entworfen.

Falls du deinerseits eine Lösung gefunden hast, wäre es nett, wenn du sie ebenfalls
bekanntgibst.

Gruß
Günni
Member: KH-AP
KH-AP Nov 17, 2005 at 06:27:04 (UTC)
Goto Top
hi
das war doch auch nur so gesagt.

Hab ja selbst schon Datenbanken programmiert die größer und Umfangreichere Abfragen benötigt haben.
Nur das Problem war / ist bei dieser Access DB, das die kollegen es nicht so mit Normalisieren und Beziehungen haben und daher alles in eine DB, oder um bei der richtigen Bezeichnung zu bleiben, Tabelle geschrieben haben.

Aber das Problem hat sich andersweitig gelöst: Nach ausführlicher Besprechung wurde klar, die DB mit dieser Abfrage interessiert eigentlich gar keinen.
Das klingt jetzt wirklich komisch... und ist auch so! face-smile

Mfg
felix
Member: Biber
Biber Nov 19, 2005 at 14:07:53 (UTC)
Goto Top
Moin alle, insbesondere Günni,

obwohl sich die eigentliche Thread-Frage nun erledigt hat: Günnis Behauptungen haben mir ja keine Ruhe gelassen.
Wenn ich deine Tabellenstruktur sehe, behaupte ich mal, so kann das NIE funktionieren.
Um dieses Problem zu lösen, brauchst du also mind. 2 Tabellen:

An alle Access-Feinde: SQL ist ein Standard, der von Access über MySQL bis hin zu Oracle gleich ist.
Mal abgesehen von einigen Funktionen, die der ein oder andere implementiert.
Diese Funktionen beeinträchtigen aber keinesfalls die Arbeitsweise von SQL.
Das wollte ich eigentlich nicht so stehen lassen (auch wenn ich bekennender MS-Access-Feind bin).

Ich habe eben nochmal den Fall unter MS-Access 2000 (statt 2003) nachgestellt. Mit einer kleinen Tabelle nach obigem Muster.
Und mal meine damaligen WHERE-Vorschläge gegen Günnis Beispieldaten abgefeuert.

select * from kraftwerk
1 E.ON ZDF WDR
2 ZDF ARD E.ON
3 NDR SWR ARTE
4 SAT1 E.ON PRO7

~~~~ (Beliebiger Freeware Sql-Client mit Access-Treiberface-smile
select * from kraftwerk
WHERE 'E.ON' NOT IN (Betreiber1, Betreiber2, Betreiber3)

3 NDR SWR ARTE
~~~~
select * from kraftwerk
WHERE NOT (Betreiber1='E.ON' Or Betreiber2='E.ON' Or Betreiber3='E.ON');

3 NDR SWR ARTE
~~~~
Access 2000 - Abfrage in der SQL-Ansicht:

select * from kraftwerk
WHERE 'E.ON' NOT IN (Betreiber1, Betreiber2, Betreiber3)
Nummer Betreiber1 Betreiber2 Betreiber3

3 NDR SWR ARTE
~~~~
select * from kraftwerk
WHERE 'E.ON' NOT IN (Betreiber1, Betreiber2, Betreiber3)

Nummer Betreiber1 Betreiber2 Betreiber3
3 NDR SWR ARTE

-----> Funktioniert also klaglos unter Access2000, aber nicht unter Access2002 SP3,
sowohl bei KH-AP als auch bei mir.
Meine Frage: Ist dieses Phänomen bekannt?

Muss bei Access2002 eventuell irgendeine *.DLL von Hand nachregistriert werden?

Nicht, dass ich nun auf meine alten Tage plötzlich mit Access Datenbanken abfragen wollte, aber das ist ja ein Problem, das alle Access2002-Anwender haben müssten.

Ratlos
Biber
Member: Guenni
Guenni Nov 21, 2005 at 18:33:32 (UTC)
Goto Top
@Biber

Hi,

es funkt. eben NICHT!, glaub's mir. Oder hast du andersrum mal versucht, dir
alle eon-Einträge anzeigen zu lassen? Indem du das "not" einfach weglässt?

select * from kraftwerk
WHERE 'E.ON' IN (Betreiber1, Betreiber2, Betreiber3)

Ergebnis:


Wie man sieht, fördert diese Abfrage auch die Betreiber zutage, die vorher bei deiner
Abfrage unterschlagen wurden, obwohl da ja nur die eon's rausgefiltert werden sollten.

Um diese Beziehung darzustellen, braucht man sogar 3 Tabellen.
Tabelle Betreiber:
id --> eindeutige Kennung/darf nur einmal vorkommen
betreiber --> Betreibername
und weitere, betreiberspezifische Felder
Tabelle Kraftwerke
id --> eindeutige Kennung/darf nur einmal vorkommen
kraftwerk --> Kraftwerkname
und weitere, kraftwerkspezifische Felder
Tabelle bez(iehungen)
betreiberid --> ID's der Betreiber
kraftwerkid --> ID's der Kraftwerke

Diese Tabellen stehen in folg. Beziehung zueinander:

Betreiber----bez-----Kraftwerke
1-------------n--n--------------1

Verknüpft werden die Tabellen dann:

SELECT Kraftwerk, Betreiber, Leistung
FROM betreiber, kraftwerke, bez
WHERE bez.betreiberid=betreiber.id And bez.kraftwerkid=kraftwerke.id;

Ergebnis:


Da unsere, kleine Beispieltabelle vier Zeilen hat(vier Kraftwerke) mit je drei Betreibern,
fördert die Abfrage folgerichtig 12 Ergebnisse zutage.

Lasse ich mir jetzt nur die eon's anzeigen:

SELECT Kraftwerk, Betreiber, Leistung
FROM betreiber, kraftwerke, bez
WHERE bez.betreiberid=betreiber.id And bez.kraftwerkid=kraftwerke.id
and betreiber='eon';

Ergebnis:


Sieht schon anders aus, oder?

Noch ein letztes Beispiel, um dich zu überzeugen:

Du hast einen Versandhandel, dort stehen Kunden, Artikel und Aufträge in der gleichen
Beziehung, also auch wieder 3 Tabellen.

Wenn du diesen Versandhandel verwalten würdest, wie die Kraftwerke in unserer
Ausgangstabelle in einer einzigen, so müßte für jeden Auftrag eine neue Spalte
eingefügt werden.

Szenario jeden Monat:
Einige Kunden bestellen 5-10mal, andere 10-20mal, wieder andere über 30mal.

Ergebnis:
Eine endlos breite Tabelle, gespickt mit unzähligen, leeren Feldern.

Und dann versuch daraus mal, mittels Abfrage vernünftige Erkenntnisse draus zu gewinnen,
z.B. Umsätze pro Kunde.

Gruß
Günni
Member: Biber
Biber Nov 21, 2005 at 21:19:33 (UTC)
Goto Top
face-big-smile face-big-smile face-big-smile
@günni
nööö, nöö, nööö, seh ich noch nicht ein (aber ich lass mich gern überzeugen).
Auf Deine 3 Tabellen komme ich durch ein billiges Union mit meiner einen Tabelle:

select k1.id, k1.Betreiber1 as Betreiber, k1.Leistung as Leistung from kraftwerke k1
union
select k2.id, k2.Betreiber2 as Betreiber, k2.Leistung as Leistung from kraftwerke k2
union
select id, Betreiber3 as Betreiber, Leistung from kraftwerke
WHERE 'E.ON' IN (Betreiber1, Betreiber2, Betreiber3)
also alle Kraftwerke, an denen E.ON "Mitbetreiber" ist. Inclusive aller Partner.

id Betreiber Leistung
1 E.ON 30
1 WDR 30
1 ZDF 30
2 ARD 50
2 E.ON 50
2 ZDF 50
3 NDR 29
3 SWR 29
4 E.ON 25
4 PRO7 25
4 SAT1 25
>> und was soll die Tabelle inhaltlich sagen?? Das Feld "Leistung" lässt sich doch wohl kaum summieren??


~~~~~~~~~~~~~~~
select k1.id, k1.Betreiber1 as Betreiber, k1.Leistung as Leistung from kraftwerke k1 where betreiber1="E.ON"
union
select k2.id, k2.Betreiber2 as Betreiber, k2.Leistung as Leistung from kraftwerke k2 where betreiber2="E.ON"
union
select id, Betreiber3 as Betreiber, Leistung from kraftwerke where betreiber3="E.ON"

id Betreiber Leistung
1 E.ON 30
2 E.ON 50
4 E.ON 25

---> Gesamtleistung aller Kraftwerke, bei denen E.ON die Finger im Spiel hat.

Und? Welchen Informationsverlust habe ich zu beklagen?
Muss für heute den Computer verlassen - ich antworte morgen gerne mehr.

Grüße Biber
Member: Biber
Biber Nov 22, 2005 at 10:12:45 (UTC)
Goto Top
Moin, Günni,

so, nochmal kurz meine Antwort von gestern ergänzen, damit Du das nicht in den falschen Hals bekommst.

Meine Beispiele bezogen sich nur auf die Behauptungen
Da aber Datensätze nun mal in Reihen angelegt werden, erscheinen natürlich die
vorher gefilterten Einträge aus dem 1. Teil der where-Klausel wieder in der Ausgabe,
aufgrund dessen, da du ja in der select-Anweisung alle 3 Betreiber auswählst.
usw., was ich nach wie vor für nicht richtig halte.

Grundsätzlich hast Du natürlich recht mit Deiner Normalisierung der Tabellen und das Beispiel Kunden-Aufträge-Artikel verdeutlicht das auch. Keine Frage, kein Einwand.

Aber der obige Tabellenaufbau wie von KH-AP skizziert signalisiert für mich, dass an den Feldern "Betreiber1", "Betreiber2", "Betreiber3" keine weiteren Attribute hängen - es sind max. drei Prosa-Felder wie es in Adresstabellen die Felder "TelNr1", "TelNr2", "TelNr3" oder in Kontakttabellen die Felder "AnsprechPartner1", "AnsprechPartner2", "AnsprechPartner3" sind.
Also (nach menschlichlichem Ermessen) maximal 3 Felder, die reine Prosa und keinerlei Schlüsselfelder sind.

So habe ich die ursprüngliche Fragestellung verstanden und so waren meine ersten Antworten gemeint.

Grüße Biber