aus einem feld mehrere Werte verwerten
ska
- datenbank
Sehr geehrtes Forum,
Also über die plz die mann in ein Formular angibt solen alle für diese Region zutreffenden Anbieter angezeigt werden!
mein erster Ansatz.
ich habe zwei tabellen(mysql) die ich miteinander verknüpfen will.
plz
plz
ort
anbieter
tarif
anbieter
weitere daten zum anbieter
mein Problem besteht darin das in der ersten tabelle plz unter anbieter mehrer nummern stehen sollen. z.B. so 1,2,6,44,5
und in der tabelle tarif steht im feld anbieter aber immer nur eine nummer z.B. 1 , in den nächsten Spalten dann halt weitere Daten um anbieter 1. Nächste Zeile steht halt die Nr. 2 bei anbieter.
Im Endeffekt sollen alle Anbieter die in der tabelle plz unter anbieter aufgezählt werden aus der tabelle anbieter über Ihre Nr. in einer Abfrage gefundne (assoziert) werden.
Ist die Abfrage auf diese Weise möglich.
Ich hoffe das ist verständlich.
ska
Hi,
mein Problem besteht darin das in der ersten tabelle plz unter anbieter mehrer nummern stehen sollen. z.B. so 1,2,6,44,5
das sind nicht mehrere Nummern, sondern eine einzige Zeichenkette: Daten in einer Tabellenzelle sind atomar.
Ist die Abfrage auf diese Weise möglich.
Nein. Normalisiere Dein Datenbank-Layout zu einer 1:n-Beziehung zwischen PLZ/Ort und Anbieter.
Cheatah
hi,
ok
also werden ich der tabelle plz weitere anbieterspalten hinzufügen, anbieter_2 usw. und jene halt über die eine die jeweils nur in einem feld stehen darf mit der anbieter nummer aus der tabelle anbieter verbinden.
könnte das so klappen?
mbt ska
Hello,
könnte das so klappen?
ja, aber es wäre qualitativ ähnlich schlecht wie vorher.
1:n heißt eine Spalte in Tabelle 1, eine Spalte in Tabelle 2, Datensätze zwischen Tabellen sind durch einen übereinstimmenden Eintrag verbunden. Wenn ein Anbieter in mehreren PLZ-Gebieten aktiv ist, dann steht da
PLZ Anbieter
12345 1
12345 2
12346 1
12347 1
12348 2
MfG
Rouven
hi,
das wären sehr viele Datensätze mehr,
Hello,
das wären sehr viele Datensätze mehr,
ketzerische Frage: UND? Das ist die Aufgabe eines DBMS, da dürfen Millionen von Sätzen rein...
MfG
Rouven
hi,
ja das ist wohl wahr, da können eine menge Datensätze hinein, aber die muss ich auch alle darein schreiben und es wird unübersichtlicher.
z.B ich habe
plz
plz ort anbieter anbieter2
und
tarif
nr name tarifname etc.
wie muss jetzt die Abfrage lauten umd die nummern in anbieter und anbieter2 mit denen aus nr zu assozieren.
diese Abfrage bringt mir nur einen anbieter.
select plz,ort,tarifname from plz,tarif where plz.anbieter = tarif.nr;
wie kann ich alle anbieter bekommen?
mbg ska
hallo,
konkreter
also ich bekomme quasi nur die plz übergeben, durch diese muss ich dann herrausfinden welche anbieter infrage kommen.
und das möchte ich so gestalten das in der zeile der plz alle anbieter über nummer mit in der zeile stehen.
wie mach ich überhaupt so eine Abfrage:
checke in wievielen spalten der zeile 10225 das Wort anbieter vorkommt und welche nr darin stehen?
ist das oder so ähnlich möglich?
und danach muss ich noch die nummern raussuchen in der tabelle tarif.
mbg ska
Mahlzeit,
checke in wievielen spalten der zeile 10225 das Wort anbieter vorkommt und welche nr darin stehen?
ist das oder so ähnlich möglich?
Ich kann mich Cheatah und Rouven nur anschließen: normalisiere Dein DB-Layout, um vernünftige n:m-Beziehungen abbilden zu können ... dann sind auch die von Dir gewünschten Abfragen kein Problem.
MfG,
EKKi
Hi,
ja das ist wohl wahr, da können eine menge Datensätze hinein, aber die muss ich auch alle darein schreiben
also keine Veränderung zum bisherigen Zustand.
und es wird unübersichtlicher.
Nicht die Spur. Im Gegenteil.
z.B ich habe
plz ort anbieter anbieter2
Dieses DB-Layout verdient mit Fug und Recht die Bezeichnung "defekt" - es sei denn, jeder Ort hat immer genau zwei Anbieter.
wie muss jetzt die Abfrage lauten
Zunächst beschäftige Dich bitte mit der Thematik des Datenbank-Layouts. Normalisierung ist hierbei eines der wichtigsten Stichworte. Solange Dein DB-Layout defekt ist, brauchst Du über Abfragen gar nicht erst nachzudenken - das lohnt nicht. Sie sind entweder extrem umständlich, inperformant, oder sogar unmöglich.
Cheatah
Hello,
Dein Problem ist der fehlende Plan für das Datenmodell.
siehe auch https://forum.selfhtml.org/?t=162588&m=1058082
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom