Backspace Geschrieben 27. Januar 2011 Teilen Geschrieben 27. Januar 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 27. Januar 2011 Teilen Geschrieben 27. Januar 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Backspace Geschrieben 27. Januar 2011 Autor Teilen Geschrieben 27. Januar 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 27. Januar 2011 Teilen Geschrieben 27. Januar 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Backspace Geschrieben 27. Januar 2011 Autor Teilen Geschrieben 27. Januar 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 27. Januar 2011 Teilen Geschrieben 27. Januar 2011 Das kann ich jetzt nicht ganz nachvollziehen. Kannst Du bitte mal Beispieldaten posten, die die falschen Daten besser erklären? Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Backspace Geschrieben 31. Januar 2011 Autor Teilen Geschrieben 31. Januar 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Backspace Geschrieben 31. Januar 2011 Autor Teilen Geschrieben 31. Januar 2011 Das mit dem löschen der Indizes hat sich erledigt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 31. Januar 2011 Teilen Geschrieben 31. Januar 2011 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 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.