BlackBoard » Design, Programmierung & Entwicklung » Programmieren » mysql - Problem mit n:m verknüpfungstabelle » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen mysql - Problem mit n:m verknüpfungstabelle
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
species8472 species8472 ist männlich
Junior Member


images/avatars/avatar-132.gif

Dabei seit: 23.05.2002
Beiträge: 172
Herkunft: Aus meiner Mutter

mysql - Problem mit n:m verknüpfungstabelle       Zum Anfang der Seite springen

Hab ein Problem mit einer mysql-Abfrage

Ich nutze mysql 5 und MYISAM als Tabellentyp

Undzwar habe ich 2 Tabellen die in einer n:m beziehung stehen, die n:m-Verknüpfungstabelle steht wiederum in einer n:m-Beziehung mit einer dritten Tabelle.

Momentan sieht die Abfrage wie folgt aus:
code:
1:
2:
3:
4:
5:
6:
7:
SELECT op.name, op.uniqueitem , op.weight, b.bonusscore, b.onwhat, p.name Prerequisite
  FROM tblotherpossessions op
  left join(tblpossessionsbonuses pb, tblbonuses b)
  on op.idotherpossession=pb.idfiotherpossession and b.idbonus=pb.idfibonus
  left join (tblprerequisitesotherpossessionsbonuses popb, tblprequisites p)
  on p.idprerequisite=popb.idfiprerequisite and pb.idfibonus=popb.idfibonus and pb.idfiotherpossession=popb.idfiotherpossession;


Die Fehlermeldung lautet:
Zitat:
1052: Column 'idOtherPossession' in field list is ambiguous


Das Datenbankmodell kann cih leider nicht anfügen, da ich das jpg nicht klein genug bekomme, daher füge ich unten den SQL-Code der betroffenen Tabellen an:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
DROP TABLE IF EXISTS `dandd`.`tblotherpossessions`;
CREATE TABLE  `dandd`.`tblotherpossessions` (
  `idOtherPossession` int(11) NOT NULL auto_increment,
  `UniqueItem` bit(1) default NULL,
  `Name` varchar(20) default NULL,
  `Weight` int(11) default NULL,
  PRIMARY KEY  (`idOtherPossession`),
  UNIQUE KEY `XPKtblOtherPossessions` (`idOtherPossession`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `dandd`.`tblbonuses`;
CREATE TABLE  `dandd`.`tblbonuses` (
  `idBonus` int(11) NOT NULL auto_increment,
  `BonusScore` int(11) default NULL,
  `onWhat` char(20) default NULL,
  PRIMARY KEY  (`idBonus`),
  UNIQUE KEY `XPKtblBonuses` (`idBonus`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `dandd`.`tblpossessionsbonuses`;
CREATE TABLE  `dandd`.`tblpossessionsbonuses` (
  `idfiBonus` int(11) NOT NULL default '0',
  `idfiOtherPossession` int(11) NOT NULL default '0',
  PRIMARY KEY  (`idfiBonus`,`idfiOtherPossession`),
  UNIQUE KEY `XPKtblPossessionsBonuses` (`idfiBonus`,`idfiOtherPossession`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `dandd`.`tblprerequisitesotherpossessionsbonuses`;
CREATE TABLE  `dandd`.`tblprerequisitesotherpossessionsbonuses` (
  `idfiPrerequisite` int(11) NOT NULL default '0',
  `idfiBonus` int(11) NOT NULL default '0',
  `idOtherPossession` int(11) NOT NULL default '0',
  PRIMARY KEY  (`idfiPrerequisite`,`idfiBonus`,`idOtherPossession`),
  UNIQUE KEY `XPKtblPrerequisitesOtherPossessionsBonuses` (`idfiPrerequisite`,`idfiBonus`,`idOtherPossession`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;




Ich hoffe es kann mir jemand helfen.

__________________

Amantium irae amoris integratio est

27.12.2005 12:18 species8472 ist offline E-Mail an species8472 senden Beiträge von species8472 suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

Achtung       Zum Anfang der Seite springen

1. WTF? Was sind das für Tabellennamen? Da soll noch einer durchsehen Augenzwinkern

2. Das Datenbankschema ist nicht vollständig, die Tabelle tblprequisites fehlt und die Spalte popb.idfiotherpossession aus deiner SELECT-Query gibt es nicht in der benannten Tabelle.

3. Unabhängig davon sehe ich noch nicht, wo der Fehler steckt. Die Meldung besagt ja, dass einer Spalte aus deiner Query keine Tabelle eindeutig zugeordnet werden konnte... aber das sollte eigentlich der Fall sein.

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

27.12.2005 17:48 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
species8472 species8472 ist männlich
Junior Member


images/avatars/avatar-132.gif

Dabei seit: 23.05.2002
Beiträge: 172
Herkunft: Aus meiner Mutter

Themenstarter Thema begonnen von species8472
      Zum Anfang der Seite springen

Habe den Fehler gefunden, bzw. ich habe ihn beseitigt, habe aus idotherpossession idfiotherpossession gemacht, dann gings(hatte das eigentlich auch in der Abfrage stehen, hab wohl aus dem falschen Fenster rauskopiert, dafür muss ich mich entschuldigen).

Irgendwie scheint mySQL es nicht zu mögen, wenn man einem Teil eines zusammengesetzten Primärschlüssel den selben Namen wie einem einzelnen gibt(anders kann ich mir den Fehler nicht erklären).

Zu den Tabellennamen, die machen Sinn, der lässt sich nur ohne die restlichen nicht ersehen.

Die Scheiss-Syntax des SQL-Codes kam daher, dass ich meinen originalen Code bei einem Computerabsturz verloren habe und ich den hierfür per reverse-engineering wiederhergestellt habe.

__________________

Amantium irae amoris integratio est

27.12.2005 21:42 species8472 ist offline E-Mail an species8472 senden Beiträge von species8472 suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » mysql - Problem mit n:m verknüpfungstabelle

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH