Veröffentlicht 27. Januar 201114 j Hallo Freunde, folgendes Problem: Bsp: CREATE TABLE automarke (id int(10) NOT NULL AUTO_INCREMENT, MARKE varchar(20) DEFAULT NULL, HERSTELLER varchar(20) DEFAULT NULL, HERSTELLUNGSLAND varchar(20) DEFAULT NULL, PRIMARY KEY(id, MARKE, HERSTELLER, HERSTELLUNGSLAND) ); Jede Zeile der Tabelle (zusammengesetzt aus den Spalten MARKE, HERSTELLER, HERSTELLUNGSLAND) darf in ihrer Kombination nur 1 mal vorkommen. Das heißt, der Spalteninhalt darf sich wiederholen, aber von den 3 Spalteninhalten dürfen maximal 2 Spalteninhalte (pro Zeile) in der Tabelle identisch sein. Habe es mit Primary Key versucht, ohne Erfolg. UNIQUE selbst konnte ich bisher jeweils nur für eine Spalte anwenden, nicht für mehrere. Danke Gruß Backspace
27. Januar 201114 j create unique index myunique_ix on automarke(ID, MARKE, HERSTELLER, HERSTELLUNGSLAND) Den Pk solltest Du wieder auf die ID alleine reduzieren. Des weiteren ist ein PK implizit schon NOT NULL. Dim
27. Januar 201114 j Hallo Dim, habe die Tabelle gelöscht und wieder neu erstellt (nur die id als Pri-Key). Habe dann im Anschluß darauf Deinen Code nachträglich in die MySQL seperat eingegeben. Hat bei mir leider nichts bewirkt, obwohl MySQL die Eingabe des Codes klaglos angenommen hat. Gruß Backspace
27. Januar 201114 j Hast Du denn alle Spalten befüllt? Falls auch in nur einer der 4 Spalten ein NULL Wert steht, ist er immer ungleich der anderen Zeilen. Die ID könnte man eigentlich auch wieder aus dem Index entfernen, denn hier sorgt eh schon der PK Constraint, dass diese eindeutig ist. Dim
27. Januar 201114 j Hallo Dim, ja alle Spalten werden befüllt. Leere ich die Tabelle, so wird jeweils wieder alles Abhängig von der Spalte Marke befüllt, die Spalte ist jedoch nicht als UNIQUE definiert. So wird z.B. die Marke Audi oder Opel,..... jeweils nur 1 mal in der gesamten Tabelle aufgeführt, was natürlich nicht das Ziel ist. Gruß Backspace
27. Januar 201114 j Das kann ich jetzt nicht ganz nachvollziehen. Kannst Du bitte mal Beispieldaten posten, die die falschen Daten besser erklären? Dim
31. Januar 201114 j Hallo, Soll-Zustand: id Marke Hersteller Herstellungsland 1 Audi Audi Deutschland 2 Audi Audi USA 3 Audi VW Deutschland ..... 10 BMW BMW Deutschland IST-Zustand: pro Marke wird jedoch nur 1 Eintrag in die Tabelle erlaubt !? id Marke Hersteller Herstellungsland 1 Audi Audi Deutschland 2 BMW BMW Deutschland 3 Mercedes ... ... hab den Unique-Code so geschrieben: create unique index autos_idx on tabelle(Marke, Hersteller, Herstellungsland); Wie kann man die erstellten Indizes (idx) eigentlich finden und löschen ? Danke Backspace
31. Januar 201114 j Ich seh leider keine Einträge, die doppelt sind und die nach Anlage des Index nicht mehr rein dürfen. Die Kombinationen sind alle eindeutig. Dim
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.