+ Antworten
Ergebnis 1 bis 12 von 12

Thema: mehrere tabellen vernüpfen sinnvoll?

  1. #1
    TP-Insider lipsum hilft, wo's geht lipsum hilft, wo's geht lipsum hilft, wo's geht Avatar von lipsum
    Registriert seit
    Feb 2004
    Ort
    zinnwald / osterzgebirge
    Beiträge
    735

    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

  2. #2
    TP-Insider lipsum hilft, wo's geht lipsum hilft, wo's geht lipsum hilft, wo's geht Avatar von lipsum
    Registriert seit
    Feb 2004
    Ort
    zinnwald / osterzgebirge
    Beiträge
    735
    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.

  3. #3
    TP-Supporter Filou macht alles soweit korrekt Avatar von Filou
    Registriert seit
    Aug 2002
    Ort
    Erde
    Beiträge
    348
    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)

  4. #4
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    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

  5. #5
    TP-Insider lipsum hilft, wo's geht lipsum hilft, wo's geht lipsum hilft, wo's geht Avatar von lipsum
    Registriert seit
    Feb 2004
    Ort
    zinnwald / osterzgebirge
    Beiträge
    735
    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

  6. #6
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    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

  7. #7
    TP-Insider lipsum hilft, wo's geht lipsum hilft, wo's geht lipsum hilft, wo's geht Avatar von lipsum
    Registriert seit
    Feb 2004
    Ort
    zinnwald / osterzgebirge
    Beiträge
    735
    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

    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.

  8. #8
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    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

  9. #9
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    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

  10. #10
    TP-Insider lipsum hilft, wo's geht lipsum hilft, wo's geht lipsum hilft, wo's geht Avatar von lipsum
    Registriert seit
    Feb 2004
    Ort
    zinnwald / osterzgebirge
    Beiträge
    735
    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

  11. #11
    TP-Specialist mike bringt sich richtig ein Avatar von mike
    Registriert seit
    Jan 2002
    Ort
    TP/Dynamik
    Beiträge
    2.876
    fein
    Gehelft? Hier kannst du dich bedanken.

    mike

  12. #12
    TP-Insider lipsum hilft, wo's geht lipsum hilft, wo's geht lipsum hilft, wo's geht Avatar von lipsum
    Registriert seit
    Feb 2004
    Ort
    zinnwald / osterzgebirge
    Beiträge
    735

    Lightbulb

    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&auml;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 &raquo;">
    </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

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51