Veröffentlicht 30. Oktober 200321 j hi leute, folgende tabellen: Gruppe ->id (int) ->name (varchar255) Mitglieder ->id (int) ->id_gruppe (varchar255) ->name (varchar255) nun gibt es den fall das ein mitglied in 2 gruppen drinne ist. deshalb hab ich id_gruppe mit varchar belegt und schreibe nun da rein z.b. "1,3". also mitglied ist in gruppe 1 u. 3. Nun weiss ich nicht wie ich den sql machen soll. ich wollte abfragen alle mitglieder die in gruppe 1 sind. bitte helft mir. Gruß kills PS: is mir klar das das nicht so geht: select * from members where id_squads = 1; <- das geht ja select * from members where id_squads = 3; <- aber das nicht er müsse quasie id_sqauds nach dem vorkommen von "3" in dem ganzen string suchen, nicht ob der string == "3" .
30. Oktober 200321 j Original geschrieben von kills nun gibt es den fall das ein mitglied in 2 gruppen drinne ist. deshalb hab ich id_gruppe mit varchar belegt und schreibe nun da rein z.b. "1,3". also mitglied ist in gruppe 1 u. 3. Das ist aber alles andere als sauber Du hast eine n:m Beziehung und brauchst eine Zwischentabelle mit den Spalten id, Mitglieds_id, Gruppen_id. Die Tabelle stellt die Verbindung zwischen den Mitgliedern und den Gruppen her.
30. Oktober 200321 j Hi, dafür macht man eine 3 Tabelle (mg) die die n:m Relation abbildet und nur die g_id und m_id enthält. Abfrage lautet dann einfach: select * from m,mg where mg.m_id = m.id and mg.g_id = 1; Gruß Jaraz
31. Oktober 200321 j also nochma danke an euch 2 helfer noch ein problem. und zwar wie könnte ich diese Tabelle treffend bennen? mir fällt kein passender name ein. t1 heisst members t2 heisst squads wie könnte ich t3 bennen? Gruß kills
31. Oktober 200321 j Original geschrieben von kills und zwar wie könnte ich diese Tabelle treffend bennen? Ich persönlich würde die member_squad nennen. Da ich ansonsten Unterstriche in Tabellennamen vermeide ist klar das es eine Zwischentabelle ist und wozu die gehört.
31. Oktober 200321 j Original geschrieben von Wolle Ich persönlich würde die member_squad nennen. Da ich ansonsten Unterstriche in Tabellennamen vermeide ist klar das es eine Zwischentabelle ist und wozu die gehört. und wie machst du bei dir dann kenntlich zu welchem "bereich" die tabelle gehört? z.b. wenn ich ein bereich "news" habe. dann habe ich bei mir auch eine tabelle vom "Typ" "news" die bei mir dann so z.b. heißen "news_comments". wie machst du dann solchen zusammenhänge bei dir kenntlich?
6. November 200321 j Original geschrieben von Jaraz Hi, dafür macht man eine 3 Tabelle (mg) die die n:m Relation abbildet und nur die g_id und m_id enthält. Abfrage lautet dann einfach: select * from m,mg where mg.m_id = m.id and mg.g_id = 1; Gruß Jaraz hab alles so weit feritig und funktioniert auch super. Nu ne frage: wäre es sinnvoll auf diese tabelle in der nur die Verbindungen der 3 Tabellen stehen einen index über z.b. alle 3 spalten zu legen? bzw überhaupt einen index darauf zu legen? wie muss ich diesen index legen damit er sinnvoll ist?
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.