mb72 Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 Hallo zusammen, ich versuche kurz zu schildern worum es geht: 1. Ich habe zwei Tabellen in einer Datenbank a)zeitungen(name, telefon, email)) und b)sportvereine(name, ansprechpartner, telefon)). 2. Ziel des Ganzen: Ich möchte einen Sportverein aus der Tabelle auswählen und dann die jeweiligen Zeitungsdaten (name, telefon, usw) dazu bekommen --> also z.B. ich wähle "werder bremen" aus und bekomme die jeweiligen zeitungen mit den kontaktdaten angezeigt, die mit werder kooperieren, soweit so gut. in einem anderen forum wurde mir insoweit geholfen, dass ich in den beiden tabellen (sportvereine und zeitungen) ein id-feld als primärschlüssel einrichten musste. und eine dritte tabelle als verbindungstabelle mit den fremdschlüsseln (also die id der beiden tabellen sportvereine und zeitungen) ok, im moment bekomme ich eine post-variable mit dem vereinsnamen, der ausgewählt wurde. diese variable möchte ich in den select verbauen. ABER: was, wenn es mehrere zeitungen sind, die in kooperation mit dem ausgewählten verein stehen. ich kann ja immer nur einen wert (id=0001 (für bild-zeitung)) in der zeile abspreichern. oder muss ich einen array anlegen. nur wie, will ja nicht das bei einem update der tabelle der vorherige wert wieder futscht ist. mhh... ok, vielleicht erstmal eins nach dem anderen. nur wie mache ich das dann konkret? also select-technisch? wie gesagt, ich habe ja in der vereinstabelle gespeichert ( wo, in welcher zeile eigentlich) welche zeitungen bei dem datensatz in frage kommen...... (also ich denke als id(also als nummern im array)) also muss der selecht ja ein verbund aus beiden (allen drei) tabellen sein. mhhh... grüße mario über hilfe wäre ich sehr dankbar! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 Bitte ordne Deine Probleme, denn es handelt sich hier nicht um ein reines Datenbankproblem. Du benötigst eine Tabelle, in die jeweiligen PKs zusammengeführt werden, der Select wird dann über einen Join gemacht. Wie Du die Daten dann weiter verarbeitest ist von der Sprache abhängig, da Du diese aber nicht nennst, kann man so nicht helfen und es würde auch nicht in den Bereich Datenbanken gehören Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 Hallo zuerst solltest du in beiden Tabellen (Vereine und Zeitungen) je einen eindeutigen Primärschlüssel einführen, der keine fachliche Relevanz hat. Das kann z.B. einfach ein AutoIncrement-Wert sein, der dir eine ID für den Verein bzw. die Zeitung liefert. Dann führst du eine 3. Tabelle Kooperation ein, die jeweils die ID des Vereins und die ID der Zeitung beinhaltet, die kooperieren. Diese Kombination sollte eindeutig sein und es kann dadurch auch ein Verein mit mehreren Zeitungen kooperieren und eine Zeitung mit mehreren Vereinen. Diese Kooperationen kannst du dann z.B. per Select und Join auf Vereine und/oder Zeitungen abfragen. Gruß Martin P.S. Flashpixx war schneller Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mb72 Geschrieben 11. Oktober 2009 Autor Teilen Geschrieben 11. Oktober 2009 (bearbeitet) danke euch beiden.. super martin, ich glaube, ich habe es jetzt begriffen. super erklärung. mhh, darf ich fragen, wie so eine kooperations-tabelle konkret aussieht? also ich trage dort die werte zeitungs-id und sportverein-id ein als int-felder. dann fülle ich die datensätze: z.b. sportverein werder bremen (=1) und dann sage ich im zweiten feld zeitungs-id (=2 für z.b. bildzeitung). ok, aber wie mache ich das, wenn es mehr als eine zeitung ist? kann ja immer nur ein wert bei int eintragen, oder? wie würde denn so ein select-join aussehen? Bearbeitet 11. Oktober 2009 von mb72 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 Die Kooperationstabelle braucht erstmal nur die beiden IDs von Verein und Zeitung. Jeder Datensatz in der Verbindungstabelle beschreibt genau EINE Kooperation zwischen EINEM Verein und EINER Zeitung. Wenn ein Verein mit mehreren Zeitungen kooperiert gibt es entsprechend mehrere Sätze in der Koop.tabelle, jeweils mit gleicher Vereins-ID aber unterschiedlicher Zeitungs-ID. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mb72 Geschrieben 11. Oktober 2009 Autor Teilen Geschrieben 11. Oktober 2009 ah, ok, verstehe, boah, wird schwierig mit der pflege der daten, es können ja immer wieder neue zeitungen zum verein kommen... also beim update. will das ja alles per php machen. hätte ich mir nicht sooo schwer vorgestellt. wenn ich dich nochmal fragen darf, wie würde denn so ein join aussehen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 (bearbeitet) wie würde denn so ein select-join aussehen? Der ist von Deinem DBMS abhängig, allgmein in dieser Form: select * from tabelle1 join tabelle2, tabelle3 on tabelle1.pk = tabelle2.pk1 on tabelle2.pk2 = tabelle3.pk Du musst in Deinem Bsp über 3 Tabellen einen Join machen Bearbeitet 11. Oktober 2009 von flashpixx select geändert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mb72 Geschrieben 11. Oktober 2009 Autor Teilen Geschrieben 11. Oktober 2009 (bearbeitet) huch, schon da? danke.. ist mit mysql. also tabelle1 ist die kooperationstabelle, oder? nee, unsinn, tabelle 3 ist die koop-tabelle. Bearbeitet 11. Oktober 2009 von mb72 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 kommt drauf an was dein select abfragen soll Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mb72 Geschrieben 11. Oktober 2009 Autor Teilen Geschrieben 11. Oktober 2009 also ich will immer nur die jeweiligen zeitungsdaten der jeweiligen zeitung oder zeitungen- die, die mit dem sportverein kooperieren - aus der zeitungs-tabelle ausgegeben haben (z.b. name, adresse, usw.) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 Dann joinst du vom Verein über die Kooperationen zu den Zeitungen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 huch, schon da? danke.. ist mit mysql. Warum schaust Du dann nicht bei mySQL nach: MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.7.1 JOIN Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mb72 Geschrieben 11. Oktober 2009 Autor Teilen Geschrieben 11. Oktober 2009 (bearbeitet) sicher kann ich das tun aber vielleicht ist martin so nett und kann mir ein beispiel liefern.. würde mir sehr helfen.. aber danke schonmal für den link! vielleicht kann ich mich ja auch mal revanchieren. ich wüßte schon gar nicht, was für ein join ich da nehmen muss? Bearbeitet 11. Oktober 2009 von mb72 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MartinSt Geschrieben 11. Oktober 2009 Teilen Geschrieben 11. Oktober 2009 Ein vernünftigen Einstieg in SQL bekommst du nicht in 2 Stunden im Forum; nimm dir ein gutes Buch/Tutorial zu SQL und versteh die Grundprinzipien. mySQL hat prima Dokus, Beispiele etc. Nimm dein mySQL und mySQLFront z.B. und baue deine Abfragen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 13. Oktober 2009 Teilen Geschrieben 13. Oktober 2009 (bearbeitet) Gut, ein beispiel : Vereine : |ID|Vereinsname|strasse|plz|ort| | 1| Verein1| x| y| z| | 2| Verein2| x| y| z| Zeitungen |ID| Zeitungsname | (sonstige Spalten) | 1| Zeitung 1 | | 2| Zeitung 2 | | 3| Zeitung 3 | | 4| Zeitung 4 | Zuordung : |ID| Verein_ID | Zeitung_ID | | 1| 1| 1| | 2| 1| 2| | 3| 2| 2| | 4| 2| 3| | 5| 2| 4| So, wenn du dir die Tabellen so anlegst, und dann wissen wisst, welche Zeitungen arbeiten mit Verein1 zusammen, SELECT z.* FROM Vereine AS v INNER JOIN Zuordung AS zuo ON v.id = zuo.verein_id INNER JOIN Zeitungen AS z on zuo.zeitung_id = z.id WHERE v.Vereinsname = 'Verein1' Giebt dir dann alle Zeitungen aus die mit mit Verein1 zusammenarbeiten. Du kommst aber nicht drum rum, wie die anderen da geschrieben haben, dich in sql einzulesen. So nen SEHR einfacher join, das muss einfach von der Hand gehn sowas. Gruß Sven Nachtrag : Was du auf jedenfall machen solltest, musst, sind on delete trigger auf der Zeitungs und auf der Vereinstabelle in dem fall. Weil, wenn du jetzt eine Zeitung löschen möchtest, weil sie z.b. nicht mehr existiert, oder einen Verein weil er abgestiegen ist, dann steht immer noch der ganze Krempel in der Zuordnungstabelle. Für sowas giebts Trigger, also wenn was gelöscht wird aus Tabelle Verein, dann lösch alles aus der Zuordnung, wo in der Verein_id Spalte, die id von dem gelöschten Verein drin steht. Das ist zwar kein grosses Problem, aber spätestens hier kommste um halbwegs fundierte Grundkenntnisse in SQL nimmer drum rum. Bearbeitet 13. Oktober 2009 von streffin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mb72 Geschrieben 14. Oktober 2009 Autor Teilen Geschrieben 14. Oktober 2009 hi seven, ertsmal vielen dank für die verständliche erklärung und deine mühe. Zitat: Was du auf jedenfall machen solltest, musst, sind on delete trigger auf der Zeitungs und auf der Vereinstabelle in dem fall. Weil, wenn du jetzt eine Zeitung löschen möchtest, weil sie z.b. nicht mehr existiert, oder einen Verein weil er abgestiegen ist, dann steht immer noch der ganze Krempel in der Zuordnungstabelle. Für sowas giebts Trigger, also wenn was gelöscht wird aus Tabelle Verein, dann lösch alles aus der Zuordnung, wo in der Verein_id Spalte, die id von dem gelöschten Verein drin steht. Das ist zwar kein grosses Problem, aber spätestens hier kommste um halbwegs fundierte Grundkenntnisse in SQL nimmer drum rum. super tipp mit den triggern! ok, also der trigger löscht dann auch nur den datensatz (gelöschten verein) aus der zuordnungstabelle? oder alle? grüße mario Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 14. Oktober 2009 Teilen Geschrieben 14. Oktober 2009 Bitte verwende die Quote Funktion !! super tipp mit den triggern! ok, also der trigger löscht dann auch nur den datensatz (gelöschten verein) aus der zuordnungstabelle? oder alle? Du musst bei den Triggern schon selbst angeben, was passieren soll. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 14. Oktober 2009 Teilen Geschrieben 14. Oktober 2009 wenn du einen Trigger schreibst, dann hast du die Informationen des Datensatzes den du löschst. Das heist, dass du damit, ein SQL statement schreiben kannst, und über die ID die du da hast, kannst du alle Datensätze aus der Zuordnungstabelle löschen, die mit diesem gelöschten Datensatz zusammenhängen. Wie gesagt, da musst du dir ein bisschen was anlesen, weil da kann man ganz böse gegen die Wand rennen bei sowas wenn man nicht genau weis was man tut Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.