 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Fragen stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
22.04.2004, 01:00
|
#1
|
|
TP-Insider
Registriert seit: Feb 2004
Ort: zinnwald / osterzgebirge
|
mehrere tabellen vernüpfen sinnvoll?
moin...
ich weiß, der betreff ist nicht sehr aussagekräftig.
zu meinem problem:
ich habe auf einer seite für eine kommune die rubrik "freizeitangebote", die in einer tabelle gespeichert sind. die freizeitangebote können von der verwaltung aus über webinterface bearbeitet werden.
im moment besteht die tabelle aus zwei spalten:
- "fr_art" art des angebots (z.b. reiten, oder baden oder bowling usw.)
- "fr_info" mit infos zu der jeweiligen freizeitart
wenn es nun mehrere angebote zu einer freizeitart gibt (z.b. baden), dann habe ich in der spalte "fr_info" bisher einfach die einzelnen angebote (z.b. freibad-1, freibad-2, hallenbad-1) in der gleichen tabellenzelle eingefügt. das ist soweit kein problem, in der ausgabe kann ich über eine liste die freizeitaktivitäten auswählen und bekomme dann den inhalt der jeweiligen zelle ausgegeben.
nun möchte ich aber zu den einzelnen angeboten noch weitere infos speichern, z.b. kontakt, öffnungszeiten oder einen link zur webseite...
das geht natürlich mit der bisherigen tabelle nicht. ich müßte also zwei tabellen anlegen:
tabelle_1 - freizeitarten
tabelle_2 - freizeitangebote mit weiteren einer zeile für jedes angebot (und den entsprechenden spalten für weitere infos)
meine frage nun:
wie kann ich die tabellen entsprechend verknüpfen, so das bei der abfrage nach "baden" alle einträge aus der angebotstabelle angezeigt werden, die zu "baden"passen?
bzw., um beim beispiel "baden" zu bleiben - wie kann ich die tabellen so verknüpfen, das das "freibad-1" sowohl unter der rubrik "baden", als auch unter der rubrik "bootsverleih" gefunden wird?
sorry für meine vielleicht dummen fragen, aber ich hab bisher keine anleitung gefunden, die ich wirklich verstanden hab.
ich hoffe, ich hab mich halbwegs verständlich ausgedrückt.
gruß
steffen
|
|
|
23.04.2004, 23:00
|
#2
|
|
TP-Insider
Registriert seit: Feb 2004
Ort: zinnwald / osterzgebirge
|
hat niemand eine idee?
oder ist das gar nicht sinnvoll, für sowas zwei tabellen anzulegen?
wie schon gesagt - ich habe diverse freizeitangebote, zu denen es jeweils ein oder mehrere "anbieter" gibt. allerdings kann eben auch ein "anbieter" mehrere freizeitangebote anbieten. ich möchte nun vermeiden, alles mehrfach eingeben zu müssen. also jede "freizeitrubrik" nur einmal und jeden "anbieter" auch nur einmal. aber eben beziehungen zwischen "angebot" und "anbieter" herstellen.
|
|
|
24.04.2004, 20:07
|
#3
|
|
TP-Supporter
Registriert seit: Aug 2002
Ort: Erde
|
du redest von joins
diese sind sogar sehr sinnvoll, da manches gar nicth anders zu ösen ist, oder nur über zig unnötiger abfragen, die du mittels joins in einer abfragen kannst.
such mal im forum nach join
ciao filou
__________________
ich liebe dich, Hans-Jörg. gebt schwulen gleiche rechte.
erst wenn wir alles verloren haben, haben wir die freiheit alles zu tun.(tyler durden)
|
|
|
25.04.2004, 21:03
|
#4
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
dein problem ist ein so genannter m:n Bezug. Ein wert einer Tabelle kann sich auf mehrere WErte in der andern Tabelle beziehen und umgekehrt. Damit kommt eine Relationelle DB nicht so einfach zurecht. Um das zu lösen musst du dir eine Zwischentabelle aufbauen, wo du genau die Bezüge wie gewünscht mittels ID Eintrag der beiden Tabellen auflöst.
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
26.04.2004, 00:33
|
#5
|
|
TP-Insider
Registriert seit: Feb 2004
Ort: zinnwald / osterzgebirge
|
filou und mike, vielen dank für eure antworten.
ich hab mich mal in der dclp-faq zum theman join eingelsen und es ehrlich gesagt nicht wirklich verinnerlichen können.
ich hab das so verstanden, das ich damit abfragen über zwei tabellen machen kann, wenn z.b. in einer tabelle die struktur aus id und angebot besteht, in der anderen tabelle aus id, anbieter und spalte id_des angebotes.
das bedeutet aber, das ich in der tabelle "anbieter" in einer spalte eine id vergeben muß, die einer id der tabelle "angebote" zuzuordnen ist.
wenn aber nun ein "anbieter" mehrere "angebote" abdeckt, so ist es doch eigentlich egal, ob in der tabelle "anbieter", zeile "freibad_1" dann z.b. "baden, miniboot," steht, oder "1, 2" und ich dann die 1 oder 2 per join aus der tabelle "angebote" abfrage? ich könnte doch dann die zelle mit den angeboten einfach nach einem entsprechendem string (z.b. "miniboot") durchsuchen und dann in abhängigkeit vom vorhandensein dieses strings ein ergebnis anzeigen lassen.
die idee von mike hät ich jetzt gern näher erklärt - ich habe bei der websuche nichts entsprechendes gefunden. also drei tabellen. eine mit angeboten, eine mit anbietern. und die dritte dann mit den daten, welcher anbieter, welches angebot führt, bzw. umgekehrt. wie muß nun diese dritte tabelle von der struktur her aufgebaut sein?
vielleicht drücke ich mich aber auch nur extrem bescheuert aus? ist irgendwie schwer, wenn man im kopf ne vorstellung hat und das dann in worte fassen soll.
also bitte nochmal nachfragen, wenn ich mich irgendwie unklar ausgedrückt haben sollte.
ich hab das gefühl, die lösung mit den drei tabellen ist die richtige für meinen fall. ich frag mich nur, ob es auch sinnvoll ist... habe ca. 20 freizeitangebote und ca. 50 anbieter. vielleicht ist ja auch eine tabelle mit je einer zeile für "angebot/entsprechenden anbieter" und abfrage über "distinct" usw. ökonomischer.
gruß
steffen
|
|
|
26.04.2004, 09:23
|
#6
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
http://www.oszhdl.be.schule.de/gymna...k/datenbanken/
p.s. es ist erstaunlich, wieviele treffer google ausspuckt, alleine wenn man 'm:n beziehung' eingibt. 
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
26.04.2004, 23:09
|
#7
|
|
TP-Insider
Registriert seit: Feb 2004
Ort: zinnwald / osterzgebirge
|
so, jetzt habe ich viel über 'm:n beziehungen' gelesen. die theorie ist für mich auch logisch und verständlich. leider habe ich kein verständliches praktisches beispiel für die umsetzung gefunden. da ich selten datenbankgeschichten mache, brauche ich nach möglichkeit ein einfaches beispiel, um das ganze nachzuvollziehen und verstehen zu können.
im workshop "einstieg in...teil 8" hier wurde das problem ja schon kurz angerissen. ich versuche jetzt mal, das selber nachvollziehen zu können - wäre nett, wenn mir jemand dabei helfen könnte (gerne auch per pm oder email, falls das hier im forum nicht passend wäre).
hier mal meine vorstellung der tabellenstruktur als anfang:
Code:
baden -> freibad-1 und freibad-2
miniboot -> freibad-2
tabelle "angebote"
+------+----------+
| id_a | angebot |
+------+----------+
| 1 | baden |
| 2 | miniboot |
+------+----------+
tabelle "anbieter"
+------+-----------+
| id_b | anbieter |
+------+-----------+
| 1 | freibad-1 |
| 2 | freibad-2 |
+------+-----------+
tabelle "bezug"
+----+------+------+
| id | id_a | id_b |
+----+-------------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
+----+------+------+
meine konkreten fragen jetzt dazu:
- ist der ansatz der tabellenstruktur so richtig?
- wie frage ich ab, welche anbieter das angebot "baden" haben?
danke und gruß
steffen
Zitat:
Original geschrieben von mike
p.s. es ist erstaunlich, wieviele treffer google ausspuckt, alleine wenn man 'm:n beziehung' eingibt.
|
ps: es ist erstaunlich, wie wenige relevante treffer google ausspuckt, wenn man 'm:n bezug' eingibt. 
|
|
|
26.04.2004, 23:50
|
#8
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
deine schlussfolgerungen sind korrekt.
und JETZT erst kommen verknüpfungen ins spiel: (ungetestet)
select a2.anbieter, a1.angebot from
angebote a1,
anbieter a2,
bezug b
where a1.id_a = b.id_a
and a2.id_b = b.id_b
dann bekommst du das raus:
freibad-1, baden
freibad-1, miniboot
freibad-2, baden
einiges rund um sql-abfragen findest du in den basic-Links
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
26.04.2004, 23:52
|
#9
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
Zitat:
Original geschrieben von lipsum
ps: es ist erstaunlich, wie wenige relevante treffer google ausspuckt, wenn man 'm:n bezug' eingibt.
|
p.s.s es ist noch erstaunlicher, wie dreist sich unkreative suchspastiker aus der affäre ziehen wollen 
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
27.04.2004, 02:34
|
#10
|
|
TP-Insider
Registriert seit: Feb 2004
Ort: zinnwald / osterzgebirge
|
so, jetzt hab ich blut geleckt...
deine ungetesteten verknüpfungen funktionieren selbstverständlich... ich experimentiere jetzt damit mal ein bißchen rum, um das prinzip zu verstehen (daß ich a1, a2 und b auch durch blubb, blabb und blibb ersetzen kann, hab ich inzwischen schon mitgekriegt - jetzt versuch ich nur noch per logik meine gewünschten ergebnisse zu erzielen).
auch wenn ich ein dreister unkreativer suchspastiker bin - so hat mir doch das obige abfragebeispiel mehr gebracht, die letzen googlestunden.
gruß
steffen
|
|
|
27.04.2004, 09:10
|
#11
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
fein 
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
27.04.2004, 23:34
|
#12
|
|
TP-Insider
Registriert seit: Feb 2004
Ort: zinnwald / osterzgebirge
|
so, also die abfrage hab ich hingekriegt. hier mal mein ergebnis:
PHP-Code:
<p><b>Auswahl Angebot:</b></p>
<form name="form1" method="post" action="<?php print $_SERVER['PHP_SELF']; ?>">
<select name="select"><option>Bitte auswählen</option>
<?php
$sql = "SELECT * FROM angebote";
$result = mysql_query($sql) or die(mysql_error());
do {
?>
<option value="<?php echo $row['id_a']?>"><?php echo $row['angebot']?></option>
<?php
} while ($row = mysql_fetch_assoc($result));
?>
</select>
<input type="submit" name="submit" class="button" value="Anzeigen »">
</form>
<p><b>Ergebnis Anbieter:</b></p>
<?php
$sql = "SELECT a.anbieter FROM anbieter a, bezug b WHERE b.id_a = '$_POST[select]' AND a.id_b = b.id_b";
$result = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
echo $row['anbieter']."<br />";
}
?>
soweit zur abfrage. ich hoffe, das halbwegs verstanden zu haben.
vielen dank nochmal
steffen
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:18 Uhr.
|
 |