| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Benutzer Registriert seit: 02.06.2006
Beiträge: 53
![]() | Sind nicht n:m Beziehungen eigendlich mehre 1:n Beziehung? Es sind mehr als 2 Tabellen. TBL_A "id_A"|"aVorname"|"aNachname" 1|"Werner"|"Meier" 2|"Sabine"|"Müller" 3|"Gabriel"|"Schulze" 4|"Joseph"|"Wildbrum" 5|"Ulrike"|"Körner" TBL_B "id_B"|"bTiername"|"bTierart"|"bTieralter" 1|"Schnuffel"|"Hase"|"12" 2|"Janosch"|"Meerschwein"|"5" 3|"Mucki"|"Gerda"|"3" 4|"Charly"|"Katze"|"8" TBL_C "id_C"|"id_A"|"id_B" 1|"1"|"4" 2|"1"|"3" 3|"1"|"2" 4|"2"|"1" Die Ausgabe mit der Abfrage: SELECT TBL_A.aVorname, TBL_B.bTierart FROM TBL_B INNER JOIN (TBL_A INNER JOIN TBL_C ON TBL_A.id_A = TBL_C.id_A) ON TBL_B.id_B = TBL_C.id_B; Werner Katze Werner Gerda Werner Meerschwein Sabine Hase Eine Kunde kann mehrere Tiere haben aber eine Tier gehört zu nur einem Kunden. Das Beispiel ist vielleicht etwas blöd. Es geht mir eigendlich nur darum, wie ich es anstelle, das wenn Werner eine Warengruppe wäre, das Werner dann nur einmal auftaucht. Hat vielleicht jemand eine Idee? Ich weiß irgendwie nicht so wie ich das anstellen soll. |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 9.937
![]() | Hallo, für Tabelle-C benötigst du nur 2 Spalten, da es sich um eine Verknüpfungs-Tabelle handelt, ist der Primärschlüssel bereits durch die Kombination von Spalte 1 und 2 gegeben. Denn diese Kombination ist eindeutig und es macht keinen Sinn, doppelte Kombinationen zuzulassen. Bau also Tabelle-C so auf, dass Spalte-Besitzer und Spalte-Tier zusammen den Primärschlüssel ergeben. Zusätzlich setzt du Spalte-Tier auf Unique. Somit ist sichergestellt, dass eine Kombination nur einmal auftreten kann und ein Tier nur einen Besitzer hat. Code: SELECT * FROM besitzer SELECT lbt.besitzer, tiere.* FROM link_besitzer_tier AS lbt INNER JOIN tiere ON lbt.tier = tiere.id WHERE lbt.besitzer = XY Du könntest stattdessen alle Besitzer-IDs sammeln und mit dieser Sammel-Information eine Abfrage auf link_besitzer_tier (Tabelle-C also) stellen. Code: WHERE lbt.besitzer IN (besitzerX, besitzerY, ..) Damit hättest du die n:m Beziehung mit nur 2 SQL-Abfragen aufgelöst, statt 1 + Anzahl-der-Besitzer SQL-Abfragen. Ich hoffe das war verständlich ![]() |
| | |
| | ||||||||
| Benutzer Registriert seit: 02.06.2006
Beiträge: 53
![]() | Irgendwie nicht so ganz. Zitat:
Zitat:
Ist das falsch wenn doppelte Kombinationen vorkommen? Ich meine ich weis Redundanz soll so weit wie möglich verhindert werden. Auf eine Zeile insgesamt doppelte Einträge, gezwungender MAssen vorhanden, aber die Zeile durch den eindeutigen Artikel Spalte id_a wieder nicht doppelt vorhanden. Code: //lbtZuordnungstabelle id_wg=Warengruppe; id_prg=Produktgruppe (=Warenuntergruppe) id_artg=Artikelgruppe; id_a=Artikel id_wg | id_prg | id_artg | id_a 2 | 4 | 12 | 14 2 | 7 | 10 | 11 2 | 6 | 5 | 6 2 | 4 | 1 | 1 2 | 4 | 16 | 5 2 | 4 | 7 | 9 Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Ich versteh das irgendwie nicht. Ist die Wahl einer Zuordnungstabelle falsch? | |||||||
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [gelöst]LEFT JOIN, DINSTINCT und trotzdem doppelte?!?! | stefanjann | Datenbanken | 10 | 06.02.2008 11:49 |
| Doppelte einträge löschen | Riks | Datenbanken | 6 | 25.04.2007 19:29 |
| Doppelte Positionen filtern | ruferp | Datenbanken | 5 | 20.02.2007 15:52 |
| Doppelte Einträge aus Array Filtern | Robstar | Datenbanken | 25 | 01.06.2006 11:56 |
| Doppelte DB-Einträge pro Jahr als 1 Eintrag / Jahr zählen. | aherzog | PHP Tipps 2006 | 10 | 25.03.2006 23:28 |
| Suchen / Filtern mit mehreren Abfragen (optional) | wizzardxx | Datenbanken | 7 | 28.01.2006 18:40 |
| Select - doppelte Ergebnisse | ragman | Datenbanken | 3 | 26.01.2006 11:53 |
| Sicherung gegen doppelte Einträge | Maho88 | PHP Tipps 2006 | 5 | 02.01.2006 12:49 |
| nicht doppelte zufallszahlen | imported_kontur | PHP Tipps 2005-2 | 6 | 15.10.2005 17:30 |
| doppelte Werte / Strings einer Spalte nur einmal ausgeben... | Datenbanken | 2 | 29.07.2005 12:10 | |
| Text aus plain text datei filtern | PHP-Fortgeschrittene | 7 | 19.07.2005 15:59 | |
| text aus eingabefeld filtern | PHP Tipps 2005 | 13 | 29.03.2005 17:06 | |
| [Erledigt] Doppelte Einträge aus Textdatei entfernen | PHP Tipps 2004 | 11 | 17.10.2004 15:00 | |
| links aus dokument filtern | wurtzel | PHP-Fortgeschrittene | 3 | 10.09.2004 17:21 |
| Werte aus mehr. dim. Array filtern und zählen | PHP Tipps 2004 | 3 | 19.08.2004 00:34 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| http://www.php.de/datenbanken/41159-doppelte-eintraege-filtern.html, php doppelte einträge filtern, php doppelte einträge verhindern, mysql doppelte einträge verhindern, sql doppelte einträge verhindern, sql doppelte datensätze filtern, doppelte einträge filtern, mysql doppelte einträge filtern, php doppelte id einträge, join 3 tabellen doppelte ergebnisse, php mysql doppelte ergebnisse filtern, sql abfrage doppelte einträge, filtern doppelter sätze aus 2 tabellen, sql doppelte spalteneinträge finden, sql doppelte einträge filtern 2 tabellen, sql gleiche zeilen sollen nur einmal auftauchen join, sql abfrage join doppelte spalten, php doppelten datensatz abfangen, warengruppe produktgruppe, sql abfrage doppelte eintrage filtern |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.